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

 更新时间:2018年02月08日 10:59:22   作者:nfer_cn  
这篇文章主要介绍了js中let和var定义变量的区别,非常不错,具有参考借鉴价值,需要的朋友可以参考下

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定义变量的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 使用 Angular 服务器端渲染 Transfer State Service

    使用 Angular 服务器端渲染 Transfer State Service

    这篇文章主要介绍了使用 Angular 服务器端渲染 Transfer State Service,假设我们使用 Angular Universal 开发一个服务器端渲染的 Angular 应用,这个应用会消费一个第三方的 Restful API
    2022-06-06
  • javascript时间与时间戳互转多种方式

    javascript时间与时间戳互转多种方式

    javascript获取时间、时间戳等,最核心的就是利用Date关键词去获取,时间戳的获取方式整理了5种方法,后4种是利用new Date()实例化对象来获取当前时间,再对当前获取的时间再进一步处理获取时间戳,本文给大家介绍的非常详细,需要的朋友参考下吧
    2023-11-11
  • JavaScrip实现一个有时间限制的缓存类的方式

    JavaScrip实现一个有时间限制的缓存类的方式

    本文将探索 JavaScript 中一种基于自动过期机制的时间限制缓存实现方式,提高数据缓存策略的灵活性和效率,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法

    javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法

    这篇文章主要介绍了javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Javascript中判断一个值是否为undefined的方法详解

    Javascript中判断一个值是否为undefined的方法详解

    这篇文章给大家详细介绍了在Javascript中如何判断一个值是否为undefined,对大家的日常工作和学习很有帮助,下面来一起看看吧。
    2016-09-09
  • DOM事件探秘篇

    DOM事件探秘篇

    本文主要介绍了DOM事件的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • javaScript中json字符串操作详细例子

    javaScript中json字符串操作详细例子

    JSON(JavaScript Object Notation)是JavaScript编程语言的一个子集,正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中,这篇文章主要给大家介绍了关于javaScript中json字符串操作的相关资料,需要的朋友可以参考下
    2023-11-11
  • JS实现AES加密并与PHP互通的方法分析

    JS实现AES加密并与PHP互通的方法分析

    这篇文章主要介绍了JS实现AES加密并与PHP互通的方法,结合实例形式分析了javascript与php的加密、解密算法相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • IntersectionObserver实现图片懒加载的示例

    IntersectionObserver实现图片懒加载的示例

    下面小编就为大家带来一篇IntersectionObserver实现图片懒加载的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • js实现导航吸顶效果

    js实现导航吸顶效果

    本文主要分享了js实现导航吸顶效果的示例代码,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论