ECMAScript 6中的var,let,const
2018-06-24 01:26:15来源:未知 阅读 ()
var的变量提升
console.log(a); //输出undefined var a=10; 他的实际执行顺序是: var a; console.log(a); a=10 这就是var的变量提升
const命令的用法
const声明的是一个只读的常量,一旦声明,就不可改变.
const a=3.14 //声明的常量a不可更改
//a=123 因为它声明的常量不可更改,所以这句会报错 // TypeError: Assignment to constant variable.
console.log(a)
const声明的常量只在块级有效
if(true){ const who="wxp" } console.log(who) //who is not defined
const声明的常量不存在变量的提升
console.log(a);//a is not defined const a=3.14
const不可重复声明常量
var msg="hello"; const msg="world" //Identifier 'msg' has already been declared
const
实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const
只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。
const arr=[] //声明的数组保存的是指针,所以无法保证它里面的值是固定的。 const obj={} //跟数组一样都是 可变数据类型 arr.push(123) obj.name="wxp" console.log(arr) //[123] console.log(obj) //{name:"wxp"}
如果真的想将对象冻结,应该使用Object.freeze
方法。
const foo=Object.freeze({}); //foo指向的是一个冻结对象,所以无法对它添加新的属性。 foo.age=22 //不生效,因为foo是一个冻结对象。严格模式时还会报错 console.log(foo) //{}
let命令的用法
let是
JavaScript 新增了块级作用域。跟const一样,只对块级有效
let a=10 if(true){ let a=5 console.log(a) //5 } console.log(a) //10
let跟const一样不可重复声明
var a=10 let a=20 //Identifier 'a' has already been declared
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Javascript中的经典技巧 2020-03-20
- 带你了解JavaScript中的函数 2020-03-08
- 默认让页面的第一个控件选中的javascript代码 2020-02-20
- 详谈构造函数加括号与不加括号的区别 2020-01-17
- JavaScript中的apply和call函数详解 2020-01-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash