学习js第十三天
ES6是ECMAScript的第6个大版本 是2015年出现的
它对现有的代码做了非常大的改动
新增了很多新内容: 作用域、关键字、类、语法、等
ES6中新增了块级作用域
配合let
关键字一起使用
{
var a = 10;
let b = 11;
}
console.log(a);
console.log(b); // b is not defined
let与var的区别
//1 let定义的变量 不允许重复
var a = 10;
var a = 11;
console.log(a)
let a = 12; // Identifier 'a' has already been declared
//2 let定义的全局变量 不会自动挂载到window上
let a = 10;
console.log(window.a); // undefined
console.log(a);
var obj = {
}
console.log(obj.a)
//3 没有声明提升
console.log(a); // Cannot access 'a' before initialization
let a = 10;
//4 for循环中 会自动开辟一个作用域 块级作用域
var arr = [];
for (let i = 0; i < 10; i++) {
arr[i] = function() {
console.log(i)
}
}
arr[0]()
arr[3]()
arr[7]()
let只是定义变量的一个方式 变量保存的内容 都可以
const
//该关键字用于定义常量
const a = 10;
console.log(a);
a = 11; // Assignment to constant variable
//let和const都是ES6新增的用于声明的关键字
//都没有声明提升 都不会注册到window上 都记得块级作用域 定义的名称不可重复
//const只在意是否改变变量 不在意变量的值是否发生变化
const a = {
};
a = 1; //使用=修改变量
a.b = 10; // 修改对象
console.log(a)
//ES5中 新增了一些对对象的操作方法
//定义对象
var obj = {
name: "王老三",
age: 33,
sex: "男"
}
Object.preventExtensions(obj); // 阻止拓展 也就是不能再添加新属性了
Object.seal(obj); // 密封 不能添加 不能删除 可以修改
Object.freeze(obj); // 冻结 不能添加 不能删除 不能修改
//一定要在定义的时候初始化一个值
ES6中对象的定义
//1 如果属性名和属性值一样 可以只写一个
var name = "张三"
var obj = {
name
// 以前
// name: name
}
console.log(obj)
//2 属性名部分可以用[]语法了 []之间是一个JS的执行环境