document.documentElement //HTML标签
document.head //head标签
document.title //title标签
document.body //body标签
typeof null 返回Object, 然而null是基本类型值而不是引用类型值,null == null 是成立的。
typeof NaN 返回number,NaN是一个自身不等于自身的数值类型。
typeof Symbol 返回function。
平稳退化:可让访问者的浏览器在不支持JS的情况下仍能顺利地浏览网站。
逐渐增强:用一些额外的信息层去包裹原始数据,用css,js去包裹html结构。
按照逐渐增强的原则创建出来的网页几乎都符合平稳退化原则。
var 属于ES5的关键词,有变量提升作用,不存在块级作用域,因此容易出现被添加到在外部环境的问题。可以重复声明。在全局环境下声明一个变量会成为顶层对象的属性。
let和const属于ES6的关键词,无变量提升,存在TDZ,存在块级作用域,不可以重复声明。在全局环境下声明不会成为顶层对象的属性。
其中const声明常量,需要在声明的同时赋值,并且变量的值之后不能改变。
动态获取: 获取的变量是一组元素,当其中一个发生改变,第二次操作这组元素时,就会从新获取一次,不在计算改变的那一个 。讲白了就是根据特点的特征来捕获,只要你是美女不管你是不是化了妆都会被选上。
getElementsByClassName/TagName/Name
静态获取:获取之后,就制定某一个对象或者节点,和节点的任何变化都没有关系 。讲白了就是就算你改了名整了容,化成灰我都认得你。
getElementsById/querySelector/querySelectorAll
在全局环境或是函数自执行情况下,this指向全局变量window
被作为某个对象的方法调用时候,this指向那个对象
被嵌套的函数独立调用时this指向window
var a = 0;
var obj = {
a : 2,
foo:function(){
function test(){
console.log(this.a);
}
test();
}
}
obj.foo(); //window
function fun(){
console.log(this.a);
};
var obj1 = {
a : 1,
foo:fun,
obj2:{
a : 2,
foo :fun
}
}
obj1.foo();//1
obj1.obj2.foo();//2
object.getName和(object.getName)定义是相同的,所以返回‘My Object‘没有问题
(object.getName = object.getName)这里括号内进行了赋值操作,而这个值是函数本身。再赋值完毕后再调用了自身,所以当作函数自执行返回的是全局变量中的name属性。
var name = 'The window';
var object = {
name : 'My Object',
getName : function(){
return this.name;
}
};
object.getName(); //'My Object'
(object.getName)(); //'My Object'
(object.getName = object.getName)(); //'The window'
IE:node.currentStyle
非IE: getComputedStyle(node)
兼容: function getCSS(node){ return node.currentStyle || getComputedStyle(node);}
原文:https://www.cnblogs.com/simpul/p/11020144.html