共计 1100 个字符,预计需要花费 3 分钟才能阅读完成。
一.Let,const
Let 具备块级作用域
(1)没有预解析,不存在变量提升
Let a=12;
function show(){console.log(a); //Tdz 开始暂时性死区,let a=5; //TDZ 结束
}
(2)同一作用域不能重复定义相同变量
For 循环,For 循环里面是父级作用域
for(let i=0;i<3;i++){
let i=’abc’;
console.log(i) // 打印出 3 次‘abc’(i 在不同得作用域)
}
const 定义常量 特性和 let 一样
(1)const 定义的定义必须有值,不能后赋值,不能修改
如果真的想将对象冻结,应该使用 Object.freeze 方法。
const foo = Object.freeze({});
// 常规模式时,下面一行不起作用;// 严格模式时,该行会报错
foo.prop = 123;
二. 解构赋值
Let [a,b,c]=[2,3,4]
注意:左右俩边,结构格式要保持一致
Json:
var obj={
a:2,
b:3
};
let {a,b}=obj;
let {a:nsds,b}=obj;// 将 a 起名字为 nsds
let [a,b,c='暂无数据']=['aa','bb'];// 可以设置默认值
交换俩个数的位置
let a=9;
let b=8;
[a,b]=[b,a];
案例
function show({a="1",b='2'}){console.log(a,b) // 给默认值
}
show({});
注意:ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于 undefined,默认值才会生效。
let [x = 1] = [undefined];
x // 1
let [x = 1] = [null];
x // null
三. 字符串模板
(1)优点:随意换行
格式:${name}
let name='abc';
let age=18;
let str=` 这个人名字:${name},年龄:${age}`;
console.log(str)
(2)字符串查找
str.indexOf(要找的东西); // 返回索引(位置),没有找到返回 -1
str.includes(要找的东西); // 返回值 true/false
判断浏览器:navigator.userAgent.includes('chrome')
检测字符串以谁开头:str.startsWith(检测东西)
检测字符串以谁结尾:str.endsWith(检测东西)
重复字符串:str.repeat(3) 重复 3 次
字符串填充:str.padStart(整个字符串长度,填充东西) // 往前填充
str.padEnd(str.length+str1.Length,填充东西) // 往后填充
正文完
发表至: javascript
2019-08-05