博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
let与var的区别
阅读量:6632 次
发布时间:2019-06-25

本文共 1384 字,大约阅读时间需要 4 分钟。

1.javascript严格模式

在js中直接运行

let hello="hello";console.log(hello)

 

错误信息如下

let hello = 'hello';^^^SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode    ...

 

解决方法,在文件头添加javascript严格模式声明:

'use strict'let hello="hello";console.log(hello)

 

声明后未赋值,表现相同

'use strict';(function() {  var varTest;  let letTest;  console.log(varTest); //输出undefined  console.log(letTest); //输出undefined}());

 

 

使用未声明的变量,表现不同

(function() {  console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)  console.log(letTest); //直接报错:ReferenceError: letTest is not defined  var varTest = 'test var OK.';  let letTest = 'test let OK.';}());

 

 

重复声明同一个变量时,表现不同

'use strict';(function() {  var varTest = 'test var OK.';  let letTest = 'test let OK.';  var varTest = 'varTest changed.';  let letTest = 'letTest changed.'; //直接报错:SyntaxError: Identifier 'letTest' has already been declared  console.log(varTest); //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)  console.log(letTest);}());

 

 

变量作用范围,表现不同

'use strict';(function() {  var varTest = 'test var OK.';  let letTest = 'test let OK.';  {    var varTest = 'varTest changed.';    let letTest = 'letTest changed.';  }  console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明  console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量}());

 

转载于:https://www.cnblogs.com/samsimi/p/6773280.html

你可能感兴趣的文章