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

原创 2015年09月28日 10:30:08

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);

更多更详细的关于”javascript 严格模式”说明,请参考阮一峰的博客
《Javascript 严格模式详解》

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变量

js中let和var定义变量的区别,主要体现在作用于的不同。 var定义的变量是全局变量或者函数变量。 let定义的变量是块级的变量。 例如: while(1){ let let1 = 2;...
  • u011045817
  • u011045817
  • 2016年09月19日 15:12
  • 1089

第28篇 js中let和var

let与var   在js中声明一个变量除了一个var 还有一个let的声明。对于var 在前面的作用域中已经讲过,这次主要说下二者的区别:    在MDN上有这样的一个demo: ...
  • fw199006
  • fw199006
  • 2016年05月12日 18:01
  • 391

JS中const、let、var之间的区别

js中关于const、let、var的区别使用
  • m0_37260875
  • m0_37260875
  • 2017年02月23日 17:10
  • 2441

Javascript ES6 let 和 var 比较

JavaScript ES6 的 let 和 var 的比较     在JavaScript 1.7中, let 关键词被添加进来, 我听说它声明之后类似于”本地变量“, 但是我仍然不确定它和 关键...
  • lcstrive
  • lcstrive
  • 2015年01月26日 10:21
  • 18583

const、let、var区别+js严格模式

一、let与var的区别
  • LKM_wonderful
  • LKM_wonderful
  • 2017年04月20日 10:31
  • 1914

js中let和var的区别

js中var和let定义变量的区别
  • yaojxing
  • yaojxing
  • 2017年06月19日 14:38
  • 348

js中let和var 的区别

1、let一定在严格模式下执行! 2、声明后未赋值,表现相同; 3、使用为声明变量let会报错; 4、重复声明同一个变量let报错; 5、变量作用范围不同,var函数作用域,let块级作用域! 示...
  • qiuchunguang
  • qiuchunguang
  • 2017年03月03日 15:01
  • 324

let和var定义变量的区别

ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 使用 let 来声明常量,使用 var 来声明变量。一个常量的值在编译时并不需要获取...
  • function__
  • function__
  • 2017年01月09日 16:05
  • 4393

ES6中let与var的区别

通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。 for (let i = 0; i < 10; i++) { // ... }consol...
  • zuiziyoudexiao
  • zuiziyoudexiao
  • 2017年08月08日 11:44
  • 1259

ES6 中的let、const与var的区别

首先需要明确的是let、const、var都是用来定义变量的  在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; conso...
  • hsany330
  • hsany330
  • 2016年11月17日 14:34
  • 8370
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js中let和var定义变量的区别
举报原因:
原因补充:

(最多只允许输入30个字)