javascript 严格模式

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

《Javascript 严格模式详解》

let和var关键字的异同

声明后未赋值,表现相同

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

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

(function() {console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)console.log(letTest); //直接报错:ReferenceError: letTest is not definedvar 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/gangerdai/p/9006663.html

let 和 var 区别相关推荐

  1. let const var 区别详解

    let和var区别 一.let不存在变量提升 首先先要了解什么叫变量提升?就是变量声明提前(!注意 不是赋值),var具有这个属性,下面有个小例子: console.log(a) var a='a' ...

  2. JavaScript中let和var区别详解

    想要了解var(ES5)和let(ES6)区别,首先就要了解ES5下JS的变量提升 一.变量提升(声) 当浏览器开辟出供代码执行的栈内存后,代码并没有自上而下立即执行,而是继续做了一些事情:把当前作用 ...

  3. scala val 与var 区别

    一个var和VAL定义在Scala之间的区别是什么? 一之间的区别是什么var和val在Scala中定义和为什么的语言都需要?为什么你会选择val在一个var反之亦然? 1. 正如许multiplay ...

  4. JavaScript let 与var 区别及var弊端

    let,const来源 ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const. 这两个关键字在 JavaScript 中提供了块作用域(Block Scope)变量( ...

  5. Swift 中 let 和 var 区别

    let 是不可变对象,对象首地址不能发生变化,也就是说内存地址不能改变,但也可以修饰可变对象 例: let str:String="aaa" str="bbb" ...

  6. javascript 声明变量var、let、const详解及示例

    1. var.let.const概述 ES6发布前,Javascript只能通过var声明变量的方式,常量.块级变量.函数变量这些概念的差别都不能很好的体现出来,于此同时,加入你要使用或者提供一个ap ...

  7. lombok 的 val 与 var

    lombok 的 val 与 var 一. 含义 val 和 var 是lombok 提供的语法糖,可以进行类型推断的功能. 您可以将val用作局部变量声明的类型,而不是实际编写的类型.执行操作的时候 ...

  8. JavaScript中的 let 和 var

    文章目录 let 和 var let 的诞生 let与var区别 全局作用域 函数作用域 块作用域 let 和var 重新声明 const let 应用场景 let 和 var let 的诞生 在ES ...

  9. [C#基础知识系列]专题十七:深入理解动态类型

    本专题概要: 动态类型介绍 为什么需要动态类型 动态类型的使用 动态类型背后的故事 动态类型的约束 实现动态行为 总结 引言: 终于迎来了我们C# 4中特性了,C# 4主要有两方面的改善--Com 互 ...

最新文章

  1. 『高级篇』docker之DockerSwarm的集群环境搭建(28)
  2. .offset().top是什么意思?
  3. 如何去掉手机php,dedecms怎么关闭手机版
  4. mongo创建用户和创建数据库
  5. P359 usestock2.cpp
  6. 表格过滤器_不用记账软件也可以记录支出明细,这个在线协同表格很方便
  7. java api class_Java API:Object class
  8. Linux联网配置-IP 网关 DNS
  9. numpy构建卷积网络
  10. Axure 9.0.0.3704 授权码
  11. excel如何随机抽样
  12. Spring注解汇总
  13. 升级mac系统正在计算机,苹果电脑系统更新,能用手机 APP 了,但我不建议你升级...
  14. android 小屏模式吗,宅在家又嫌手机屏幕小?教你如何玩转投屏
  15. JAVA中implement和extends的区别?
  16. 前端工程师到底有哪些晋升和发展方向选择?
  17. 课上——HTML 表格 学生成绩表
  18. 【MacBook Pro 2016款 外接 GTX-1080显卡】- 技嘉 AORUS GTX 1080 Gaming Box (附安装参考教程)
  19. 斥资建造全景分割养猪场,AI 养猪,到底靠不靠谱?
  20. 求有关计算机的英语科技小短文,带翻译,200字左右,关于计算机的英语小短文,带翻译....

热门文章

  1. python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...
  2. java 增量编译_java增量构建关于lambda表达式的问题
  3. hal库开启中断关中断_「正点原子NANO STM32开发板资料连载」第十章 外部中断实验...
  4. java 扫描包框架_在Android中实现类似Spring的软件包扫描
  5. python 数组在最前面插入数据_python – 如何将数组插入数据库?
  6. HDLBits 系列(30)Serial Receiver
  7. 【 FPGA 】设置输出延迟(Output Delay)
  8. Java基础-序列化与反序列化
  9. 5.spring boot使用FastJson解析JSON数据
  10. 分布式系统数据一致性解决方案