欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js中let和var定义变量的区别

程序员文章站 2022-05-10 21:16:20
javascript 严格模式 第一次接触let关键字,有一个要非常非常要注意的概念就是”javascript 严格模式”,比如下述的代码运行就会报错: let...

javascript 严格模式

第一次接触let关键字,有一个要非常非常要注意的概念就是”javascript 严格模式”,比如下述的代码运行就会报错:

let hello = 'hello world.';
console.log(hello);

错误信息如下:

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

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

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

let和var关键字的异同

声明后未赋值,表现相同

'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不是同一个变量
}());

总结

以上所述是小编给大家介绍的js中let和var定义变量的区别,希望对大家有所帮助