先看题目
1、结果是 undefined
console.log(a)
var a = 1
复制代码2、报错 Uncaught ReferenceError: Cannot access 'a' before initialization
console.log(a)
let a = 1
复制代码3、报错 Uncaught ReferenceError: 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() {console.log(a=4)} 、 1 、1 、3 、3、 Uncaught TypeError: 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
<script>
var a = 1
</script>
<script>
console.log(a)
</script>
复制代码7、Uncaught ReferenceError: a is not defined
<script>
console.log(a)
</script>
<script>
var a = 1
</script>
复制代码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、逐行解读代码
表达式(+ - * / % ++ -- ! 参数)可以修改预解析出来的值,函数声明不是表达式,函数调用也是局部的域
博客给出了11道JavaScript代码题的结果,如undefined、报错信息等。还介绍了浏览器对JavaScript代码的解析过程,包括预解析,即找var、function和参数,变量赋undefined,function为函数块;以及逐行解读代码,表达式可修改预解析值,函数声明非表达式。

被折叠的 条评论
为什么被折叠?



