- 条件语句和循环语句不能阻止var声明的变量声明的提升。(建议使用ES6中的let声明变量)。
- break关键字打破循环时,在未给循环命名的时候只会打断本层循环。在使用命名后,break会同时打破本层和命名层。
function关键字定义的函数,js会始终在调用它前解析它。 举个例子:
var a = function(){①};
function a(){②};
a();
这段伪代码会执行①,因为function会提升至最前,之后的var a相当于覆盖了function定义的a函数。因此a()执行的是①的内容。数组的方法中,pop(),shift()这些删除数组中值的方法,返回的都是一个新数组,数组中的值是被删除的项。
- push(),unshift()返回值是新数组的长度。
- slice(a, b)中a和b的值可以是负数,代表从后往前数。
splice(),一个增、删、改集于一身的神奇方法。
splice(a,b) 从a开始,删除b项,返回被删除的数组
splice(a,b,xx) 从a开始,删除b项,替换成xx内容,返回被删除的数组
splice(a,0,xx) 在a项后插入xx,返回空数组字符串中substr(a,b) a代表起始位置,b代表长度,a可以是负数,b不可以。
substring(a,b) a代表起始位置,b代表结束位置,包括a不包括b。
其中a,b可以为负数,但负数会被认为是0。
无论a和b谁大,默认都是从小的索引值开始截取,至大的索引值。因此如果a>b,运行的就是substring(b,a)IIFE的写法中,推荐使用
(function(){})();
这种双括号的写法,+、-、!也可代表IIFE。function fn(){}();
这种写法是错误的。但是,var fn = function(){}();
这种写法是正确的。- offsetWidth()代表实际占位的宽度:width+padding+border
offsetHeight()代表实际占位的高度:height+padding+border
clientWidth() : width+padding ( 没有border)
clientHeight(): height+padding (没有border)