一道关于js声明变量,var和let的面试题

 1         function aa(flag) {
 2             // var test // 变量提升,函数最顶部
 3             if(flag) {
 4                 var test = 'hello man'
 5             } else {
 6                 //此处访问 test 值为 undefined
 7                 console.log(test)
 8             }
 9             //此处访问 test 值为 undefined
10         }
11         aa(false);
12 
13     //结果 undefined   test被声明了  但是没有被赋值

总结: 用var声明变量时,变量提升到函数最顶部或全局最顶部。

 1         function aa(flag) {
 2             if(flag) {
 3                 let test = 'hello man'
 4             } else {
 5                 console.log(test)
 6             }
 7         }
 8         aa(false);
 9     
10     //结果  js运行报错 test is not defined  test没有被声明

总结: ES6语法的let声明变量时,只在{} 代码块中被声明,所以在相应代码块之外引用,会运行报错。

猜你喜欢

转载自www.cnblogs.com/lml2017/p/9944702.html
今日推荐