虽互不曾谋面,但希望能和您成为笔尖下的朋友
以读书,技术,生活为主,偶尔撒点鸡汤
不作,不敷衍,意在真诚吐露,用心分享
点击左上方,可关注本刊
标星公众号(ID:itclanCoder)
如果不知道如何操作
点击这里,标星不迷路
━━━━━━
变量声明不会提升
直接写出下边程序的输出结果
console.log(foo);
var foo = "test"
答案: undefined
解析: 变量foo,相当于只有var foo;但是却没有赋值,所以值是undefined,并且变量的声明并不会提升,只有函数声明会提升
词法作用域
写出下面一段代码输出结果
var temp = 123;
function f() {
console.log(temp);
if(false) {
var temp = 456
}
}
f();
答案: undefined
解析: 在没有调用 f 函数时,temp的值是123,在查找变量时,它先会从函数内沿着作用域链逐级向外进行查找,若有则会返回,若无,则会返回undefined,
使用var声明的变量并不会有块级作用域,在if语句块声明赋值的变量,相当于是裸露的,因为在 f函数内,变量先使用,但是未赋值,所以是undeifined
块级作用域
写出下面一段代码输出的结果
var temp = 123;
function f() {
console.log(temp);
if(true) {
console.log(temp);
let temp = 456;
}
}
f();
答案: 123,然后报错ReferenceError: Cannot access 'temp' before initialization,无法在初始化之前访问变量
解析: let声明的变量是有块级作用域的,不能重复声明定义

公众号(ID:itclanCoder)
码能让您早脱菜籍,文能让您洗净铅华
可能您还想看更多:
CSS篇-面试题2-如何让一个长度未知的图片水平和垂直方向均居中

喜欢就点个在看再走吧


179

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



