いくつかのテーマはJavaScript作用領域、作用ドメインチェーン、事前解析規則、表現を理解します.
3047 ワード
まずテーマを見ます
1、結果はundefinedです.
1、事前解析
var functionパラメータを探して、変数はundefinedを与えて、functionは全体の関数ブロックscriptのために上から下の関数は中から外までです.
2、コードを逐行解読する
表式(+-*/%+-!!)は、あらかじめ解析した値を変更できます.関数宣言は式ではなく、関数呼び出しも部分的なドメインです.
転載先:https://juejin.im/post/5ce4e808518825333d1b9248
1、結果はundefinedです.
console.log(a)
var a = 1
2、Unicaght ReferenceError:Canot access'a'before initiazationを誤報しました. console.log(a)
let a = 1
3、Unicaght ReferenceErrerを間違えました.a is not defined console.log(a)
a = 1
4、結果が強すぎるa(){a=4}、1、1、3、3 console.log(a)
var a = 1
console.log(a)
function a() {a=2}
console.log(a)
var a = 3
console.log(a)
function a() {a=4}
console.log(a)
5、結果が強すぎるa(){consolie.log(a=4)}、1、1、3、3、Uncaugt TypeErr:a is not a function console.log(a)
var a = 1
console.log(a)
function a() {a=2}
console.log(a)
var a = 3
console.log(a)
function a() {console.log(a=4)}
console.log(a)
a()
6、1
var a = 1
console.log(a)
7、Uncaugt ReferenceError:a is not defined
console.log(a)
var a = 1
8、undefined、1 var a = 1
function f() {
console.log(a)
var a = 2
}
f()
console.log(a)
9、1、2 var a = 1
function f() {
console.log(a)
a = 2
}
f()
console.log(a)
10、undefined、1 var a = 1
function f(a) {
console.log(a)
a = 2
}
f()
console.log(a)
11、1、1 var a = 1
function f(a) {
console.log(a)
a = 2
}
f(a)
console.log(a)
ブラウザ解析プロセス1、事前解析
var functionパラメータを探して、変数はundefinedを与えて、functionは全体の関数ブロックscriptのために上から下の関数は中から外までです.
2、コードを逐行解読する
表式(+-*/%+-!!)は、あらかじめ解析した値を変更できます.関数宣言は式ではなく、関数呼び出しも部分的なドメインです.
転載先:https://juejin.im/post/5ce4e808518825333d1b9248