1.TDZ :在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。 – 这使得typeof 不再绝对安全,在let 变量之前只用typeof 变量 会报语法错误
块级作用域:ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域。
const : (声明常量的明明规则,全大写,下划线链接两个词 MAX_VALUE)
//一个彻底冻结对象的函数
var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key, i) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});
};
获取顶层对象:
var getGlobal = function () {
if (typeof self !== 'undefined') { return self; }
if (typeof window !== 'undefined') { return window; }
if (typeof global !== 'undefined') { return global; }
throw new Error('unable to locate global object');
};
2.IIFE : 立即执行函数 (immediately-invoked function expression),写法:
(function(){ ... })()
(function(){}())
3.csp :内容安全策略(Content Security Policy) 具体的 解释以及策略
4.解构: 解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于 undefined 和 null 无法转为对象,所以对它们进行解构赋值,都会报错,且有可能导致解构的歧义时,就
不得使用圆括号:
//变量声明语句
let [(a)] = [1];
//函数参数 (也属于声明变量)
function f([(z)]) { return z; }
//赋值语句的模式
({ p: a }) = { p: 42 };
可以使用圆括号的情况:
//赋值语句的非模式部分,可以使用圆括号
[(b)] = [3]; // 正确
({ p: (d) } = {}); // 正确
[(parseInt.prop)] = [3]; // 正确
解构的用途:
//1 交换两个变量的值,而不再需要中间变量 temp
let x= 1,y = 2;
[x,y] = [y,x] // x 2 y 1
//2 函数返回对个值
function testFn (){
return {foo:1,bar:2}
}
let {foo,bar} = testFn(); // foo 1 , bar 2
// 3 函数参数对应
function testFn2({foo,bar}){
console.log(foo);//1
console.log(bar);//2
}
testFn2({foo:1,bar:2})
// 4.提取对象中的参数值
let jsonData = {
foo:3,
bar:4,
numberData:5580
}
let {foo,bar,numberData:newNum} = jsonData
// foo 3,bar 4,numberData 5580
// 5.输入模块的指定方法
onst { SourceMapConsumer, SourceNode } = require("source-map");
...... //还有两种自行自行查阅文档