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

Posted lml2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道关于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声明变量时,只在{} 代码块中被声明,所以在相应代码块之外引用,会运行报错。

以上是关于一道关于js声明变量,var和let的面试题的主要内容,如果未能解决你的问题,请参考以下文章

面试题 var let const的区别

2023前端面试题及答案整理(JS面试题)

面试题 var let const的区别 箭头函数和普通函数的区别

javaScript 变量提升 var let const,以及JS 的解析阶段和执行阶段

JavaScript面试题总结系列

关于变量声明的var,let,const