-
ES6 中 通过const来声明一个常量,
查看全部 -
ES5中 通过下面的方式声明常量,Objec.definePropery(window,'es',{
value:'es6',
writable:false
})
查看全部 -
live server插件查看全部
-
箭头函数没有this查看全部
-
基本数据类型存在栈内存里面
引用数据类型存在堆内存里面
实质上是地址不能被改变
冻结对象Object.freeze(函数),但只能浅层次冻结
Object.keys(obj).forEach(function(key))
查看全部 -
const设置常量时一开始就要赋初始值,不允许重复声明;不属于顶层对象window,没有变量提升(需要先声明后使用);具有块级作用域,在括号内有用,超过括号没有用
查看全部 -
const常量总结
查看全部 -
ES6思维导图
查看全部 -
mark思维导图
查看全部 -
箭头函数中,this将向外层作用域查找指向;
箭头函数中,不能使用arguments参数
查看全部 -
Object.freeze同样可能会引入bug(编译通过,运行不是预期结果,还不报错。omg!)查看全部
-
类比一下其它语言: 1、java中final关键字修饰的变量就是java中的常量,可以通过反射修改访问属性,从而“改变”常量。 2、C和C++通过const定义的常量呢?多年不用,都忘了,有小伙伴知道吗?查看全部
-
Object.defineProperty、writable=false定义的常量,可以重复赋值(编译通过),但是不会生效(运行时失败,却不报错)。所以这种方法可会隐藏一些程序bug。查看全部
-
var会污染全局变量window。 var会代码提升(未定义的产量自动识别下文有没有定义)查看全部
-
1、变量定义的发展历程
ES3定义常量通常使用var 声明一个名称大写的变量,本质还是变量;
ES5定义常量: -- 但定义之后再去修改值并不会报错Object.defineProperty(window, 'es', {
value: 'es6',
writable: false // 不允许修改
})
es6中定义常量使用const进行声明
2、const关键字特性
不允许重复声明 -- 重复声明会报错
不属于顶层对象window,但是使用var声明的变量属于window对象
不存在变量提升 -- 先声明在使用,且声明的时候必须赋值
暂时性死区 -- 在声明之前使用会报错,在当前的作用域声明之前会形成一个暂时性的死区
块级作用域 -- 花括号之内,避免污染全局
查看全部
举报