JS 함수 향상 & 변수 향상 및 함수 성명 & 함수 표현 식 의 차이
10144 단어 Javascript
오늘 은 js 의 변수 향상 문 제 를 보고 함수 향상 을 언급 했다.그리고 자신 이 함수 성명 과 함수 표현 식 을 잘못 알 고 함수 향상 에 오류 가 생 겼 다 는 것 을 알 게 되 었 습 니 다.
변수 향상
console.log(a)
var a=100 //undefined
console.log(a)//100
승급 후
var a; // , , ,
console.log(a); //undefined
a=100 //
console.log(a) //100
함수 향상
메모: js 에서 함 수 를 만 드 는 방법 은 두 가지 가 있 습 니 다. 함수 성명 과 함수 표현 식 입 니 다.함수 만 함수 승급 가능!!!(함수 성명 과 함수 표현 식 을 구분 하지 못 했 기 때문에 함수 향상 에 자주 오류 가 발생 합 니 다 = =)
먼저 함수 성명 과 함수 표현 식 을 간단하게 인식 합 니 다.
//
function fn1(){
console.log(12)
}
//
var fn2 = function () {
console.log(222)
}
f1() //123
f2() //error:f2 is not a function
//
function f1() {
console.log(123)
}
//
var f2 = function() {
console.log(222)
}
승급 후
// -----
function f1() {
console.log(123)
}
var f2;
f1() //123
f2() //error:f2 is not a function
//
f2 = function() {
console.log(222)
}
2.1 함수 향상
fn('zhangsan') //zhangsan 20
function fn(name) {
age = 20
console.log(name,age)
var age
}
승급 후
function fn(name) {
var age; // , age
age=20; //
console.log(name,age)
}
fn('zhangsan')
2.2 함수 식
fn1('lisi')//fn1 is not a function
var fn1=function (name){
age = 20
console.log(name,age)
var age
}
효과 향상
var fn1;
fn1('lisi')//fn1 is not a function
fn1=function (name){
var age;
age = 20
console.log(name,age)
}
나의 이해
변수 향상: 현재 scope 의 맨 위 에 변수 성명 을 올 리 고 할당 문 구 는 제자리 에 있 습 니 다!그래서 할당 문 앞에서 호출 하면 4. 567914 가 나타 납 니 다.함수 향상: 두 가지 로 나 뉘 는데 하 나 는 순 함수 향상 이 고 하 나 는 함수 표현 식 향상 입 니 다. 함수 표현 식 은 실질 적 으로 변수 향상 입 니 다. 또한 함수 향상 의 우선 순위 가 변수 보다 높 습 니 다!
별도로 열람 하 다https://www.runoob.com/js/js-hoisting.html
https://www.cnblogs.com/liuhe688/p/5891273.html https://www.cnblogs.com/damonlan/archive/2012/07/01/2553425.html https://zhuanlan.zhihu.com/p/43607950
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java,python,JavaScript 및 jquery 순환 문장의 차이2. 자바 순환 문장 조건 문장이 무엇이든지 간에 코드 블록은 최소한 한 번 실행되고do/while 순환을 사용할 수 있습니다.do/while 문법: 즉, 코드 블록을 먼저 집행한 다음에 조건이 성립되었는지 판단하고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.