1.没有块级作用域导致内层变量覆盖外层变量。
var date = new Date().getDate();
function f(){
console.log(date);
if(false){
var date = 0;//变量提升
}
}
f();//undefined
2.ES6中标签模板的用法:
let a = 1;
let b = 2;
function tag(arr, value1, value2){
console.log(arr); //["hello ", " world ", ""]
console.log(value1); //3
console.log(value2); //2
}
tag`hello ${a + b} world ${a * b}`;
/**
如果函数名后的模板字符串中没有变量,则直接将其作为函数参数调用。
如果存在变量则先将模板字符串处理成多个参数,再调用函数。
处理规则:
1.默认该函数第一个参数为数组,该数组的成员是模板字符串中那些没有变量替换的部分。
2.变量替换只发生在数组的第一个成员与第二个成员之间、第二个成员与第三个成员之间。
以此类推,故arr中第三个成员为"",原因是${a * b}的变量替换发生在第二个成员与第三个成员之间,
所以必须存在第三个成员。
3.函数的其他参数,都是模板字符串各个变量被替换后的值。
函数形如:
function tag(stringArr, ...value){}
*/