JavaScript 严格模式(use strict)

严格模式下你不能使用未声明的变量。
const c1 = 1;
const c2 = {};
const c3 = [];
不能对c1的值进行再次的赋值;
也不能在对c2,c3进行赋值,但是可以改变c2的内容,因为c2是个对象,看例子
c2.p1 = 1; console.log(c2.p1)打印出来结果为1
同样,也可以往c3中添加元素,因为c3是个数组。
const声明的变量与let声明的变量类似,它们的不同之处在于,const声明的变量只可以在声明时赋值,不可随意修改,否则会导致语法错误
例如 const a=1; a=12; 这样会报错 
同样 const a=0; a++;在use strict下一样会报错
声明不赋值同样报错,const a; 报错
let a=0; a++;可以被执行; let a=0; a=12;可以被执行
let a=0; let a=12; 报错
 有区别于var在于他们存在块级作用于,就是你声明的变量只作用于某个域,比如一个函数,而不是全局,从上面也可以看出let 为变量 const为常量

下面在具体举例说明

1.let声明的变量只在变量声明时所在的代码块内有效 
对比: 

  var url = "www.baidu.com"; 

  alert(url); 
//-------------------------------- 

  let url = "www.baidu.com"; 

  alert(url); 
2.let不允许在同一作用域重复声明变量: 
 let url = "www.baidu.com"; // 第一次

  let url="www.sina.com.cn"; //第二次
   console.log(url);  
} // 第一次正确,第二次放到括号里面错误 
3.let与全局变量的声明 
//错误 
let a=3; 
  { 
    var a=5; 
  } 
    alert(a); 
 
//正确 
var a=3; 

   let a=5; 

  alert(a); 
4.作用到子作用域
let a=3;
{
   a=5;  //子作用域
}
  alert(a); //弹出5

二、const命令 

const命令用来生成一个常量,常量被声明后,值无法改变。其他与let相同。
const一旦定义,无法更改,let定义块级变量,他们都是无法重复声明的,会报错,而var可以覆盖之前的声明

ES6新增const常量、let变量的更多相关文章

  1. #define宏常量和const常量的区别

    C++ 语言可以用const 来定义常量,也可以用#define 来定义常量.但是前者比后者有更多的优点:(1) const 常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查.而 ...

  2. C常量与变量

    /** * C中的常量与变量 * 常量的值在程序中是不可变化的,其在定义时必须给一个初始值 * 常量的定义方式: * 1.#define 定义宏常量 * 2.const 定义const常量 * 对于# ...

  3. ES6 新增声明变量的 var let const 的区别详解

    var 如果使用关键字 var 声明一个变量,那么这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,那么这个变量就属于全局作用域. let 1.let 声明的变量具有块作用域的特征 ...

  4. ES6新增语法和内置对象(let,const, Array/String/Set 扩展方法(解构赋值,箭头函数,剩余参数))

    1.let ES6中新增的用于声明变量的关键字. let 声明的变量只在所处于的块级有效. 注意:使用 let 关键字声明的变量才具有块级作用域,var 关键字是不具备这个特点的. 1. 防止循环变量 ...

  5. ES6新增语法(一)——let、const、var的区别

    ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...

  6. ES6 let const 声明变量 块级作用域

    ES6 中除了使用 var 定义变量,还有let.const,定义变量. function getValue(condition){ console.log(typeof value2); // un ...

  7. ES6之新增const命令使用方法

    hi,我又回来了,今天学习一下const命令. 声明一个常量 const声明一个只读常量,一旦声明,常量的值便不可改变. 例子如下: const food = 12; food = 23; // Un ...

  8. 【ES6基础】let、const命令和变量的结构赋值

    ES5声明变量(2):var .function ES6声明变量(6):var.function.let.const.import和class 1.let命令和const命令 (1)let和const ...

  9. es6 新增变量声明方式

    let 与 var var var声明的变量拥有全局作用域或者局部作用域 在全局中声明变量即为全局变量 在函数中声明变量即为局部变量 而var在使用过程中也逐渐暴露出许多问题 var的几大问题 变量提 ...

随机推荐

  1. JSON详解 .net

    之前json掌握的不好,浪费了好多时间在查找一些json有关的转换问题,我所知道的方法只有把json序列化和反序列化一下,但是太麻烦了我觉得,所以就在找一些更简单又方便使用的方法.也许这个会有用吧,所 ...

  2. ES6新特性(函数默认参数,箭头函数)

    ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

  3. Lync 客户端:无法登陆到Lync,验证服务器中的证书时遇到问题

    安装完Lync客户端后,运行时Lync客户端时,报出如下错误: [原因解析] Lync客户端没有正确安装CA证书链. [解决办法] 第一种方法:将计算机加入域. 第二种方法:不加入域的处理方法: 1. ...

  4. Android Studio利用Gradle删除没有使用到的资源和代码文件

    一.打包时忽略无用资源 我们在打包的时候默认会把没有用到的资源(比如图片)也打包成app,徒增了应用的大小.现在我们可以利用Gradle来优雅的去除没有用到的资源文件了! 就是在gradle中配置sh ...

  5. 发布的时候Archive灰色

    主要是因为发布的时候要选为将模拟器选择一下,选为Generic iOS Device. 来自为知笔记(Wiz)

  6. IOS 实现 AAC格式 录音 录音后自动播放

    废话不说了 不知道aac可以百度一下 下面直接上代码,一个h文件 一个m文件 搞定! #import <AVFoundation/AVFoundation.h> #import <U ...

  7. 实验:传输层:UDP协议 学习笔记

    一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地 ...

  8. 别了,CL君

    去年是我毕业的第3年,去年一年里没有上班,本打算重拾青春校园的纯粹记忆,当时想过考研.在西电租房子住了3个月后就打道回府了.回北郊后,住在毛坯房子里,一个人睡觉倒也不觉得黑,也不觉得害怕. 后来201 ...

  9. Sonar代码质量管理工具

    最近上线了,Sonar代码扫描工具: 与jenkins集成: 实现自动扫描: 下面来简单聊聊Sonar能解决什么问题: ---------------------- Sonar简介 Sonar是一个用 ...

  10. [Tomcat]如何在同一台机部署多个tomcat服务

    背景:往往不知情的同学在同一台机器上部署多个tomcat会发现第二个tomcat启动会报错.而有些同学会想到可能是端口重复,然而,在server.xml改了端口还是发现不行.其实要想实现同一台机器部署 ...