1.9 过滤数组Set(has)和includes
1.10解构赋值
1,2,3
es6中的解构赋值,前面的赋值时默认值;后面的赋值会改变前面所附的默认值;当后面所赋值为undefined时,变量为默认值。
1.11 dom操作
let list = document.getElementById("list");
let lis = list.querySelectorAll('li'); (1)
//let lis = list.getElementsByTagName('li'); (2)
list.replaceChild(lis[2],lis[1]); (3)
list.insertBefore(lis[1],list.children[2]); (4)
// list.appendChild(lis[1]) (5)
//console.log(lis[1]); (6)
// 百度,腾讯,阿里
// (3)执行后: 百度,腾讯
// (4)执行时,lis[1]是阿里, list.children是动态获取的,此时获取到的children[2]是null(insert a before b),这时候insertBofore的第二个参数是null,默认将a插入到最后,相当于(5)
(1)的querySelectorAll是静态的,即 li ,1,2,3内容是固定的;百度,阿里,腾讯
(2)与(1)不同,是动态获取的,注释(1),执行(2),结果是:百度,阿里;此时找不到list.children[2],不执行(4)
1.12 预编译(局部与全局)
1.13 预编译与立即执行函数作用域
var name = 'kaivon';
(function (){
if(typeof name === 'undefined'){
var name = 'chen';
console.log(name);
}else{
console.log(name);
}
})();
立即执行函数有作用域, 和函数一样有自己的局部预编译过程
1.14
最后一个var 没有意义,不执行。
1.15 预编译
if(!('a' in window)){
var a = 1;
}
console.log(a);
1.16
val变量与val属性不一样,obj中的val是属性,log的val是变量; 所以this指向的obj内部是不包含val变量的,只包含val属性。在obj的外层寻找val变量。
1.17
var name = 'kaivon';
var object = {
name: 'chen',
getNameFunc: function(){
return function(){
return this.name;
}
}
}
console.log(object.getNameFunc()());
//kaivon
非直接调用,this指向window,单独return了一个函数,单独执行。
1.19
//chen
// this被保存,并且被return形成闭包,指向object;