虽互不曾谋面,但希望能和您成为笔尖下的朋友
以读书,技术,生活为主,偶尔撒点鸡汤
不作,不敷衍,意在真诚吐露,用心分享
点击左上方,可关注本刊
标星公众号(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-如何让一个长度未知的图片水平和垂直方向均居中
喜欢就点个在看再走吧