一、this的理解
在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是,指向该函数所属的对象 1.全局的this -> 指向的是window 2.对象中的this -> 指向其本身 3.事件中this -> 指向事件对象
二、jquery.extend与jquery.fn.extend的区别 jquery.extend用来扩展jquery对象本身 jquery.fn.extend用来扩展jquery实例
三、闭包 闭包简单而言就是内层作用域可以访问外层作用域的变量,闭包中引用到的包裹函数中定义的变量永远不会被释放,应用到闭包时需要注意及时释放闭包函数(内存泄漏); 四、事件绑定1.addEventListener; 2.attachEvent(IE低版本) 五、阻止事件冒泡e.stopPropagation();/* 标准 */ event.cancelBubble=true;/* <=ie9 */ 六、阻止默认事件return false / e.preventDefault(); 七、原生js操作dom节点obj.appendChild(); //添加 obj.insertBefore(); //插入 obj.replaceChild(); //替换 obj.removeChild(); //删除 八、undefined的产生1.变量定义了没有被赋值; 2.想要获取一个对象上不存在的属性或者方法; 3.数组中没有被赋值的元素;(not defined 语法错误)
//函数声明与变量声明会被js引擎隐式提升到当前作用域的顶部,但是只提升名称不会提升赋值部分
var foo = 1; a(); function a(){ console.log(foo); //undefined var foo = 2; console.log(foo); //2
} 十、js精度不能精确到0.1???// js精度不能精确到0.1 var n = 0.3,m = 0.2,i = 0.2, j =0.1;
console.log((n-m) == (i-j)); //false console.log((n-m) == 0.1); //false console.log((i-j) == 0.1); //true console.log(n-m); //0.09999999999999998 console.log(i-j); //0.1 十一、bind live delegatebind:绑定事件,对新添加的事件不起作用,方法用于将一个处理程序附加到每个匹配元素的事件上并返回jQuery对象 live:方法将一个事件处理程序附加到与当前选择器匹配的所有元素(包含现有的或将来添加的)的指定事件上并返回jQuery对象 delegate:方法基于一组特定的根元素将处理程序附加到匹配选择器的所有元素(现有的或将来的)的一个或多个事件上 十二、js函数声明优先于变量声明// 返回的是函数b(c)而不是变量b(c),不论是先声明的变量还是函数 function b(){} var b; console.log(typeof b); //function
var c; function c(){} console.log(typeof c); //function 十三、arguments的操作function foo(a){
arguments[0]=2; console.log(a); //2 // 因为 1. arguments是对实参的访问; 2. 通过arguments[i]可以修改指定实参的值
} foo(1);
十四、浏览器渲染模式是标准模式,还是怪异模式// 标准模式/怪异模式 取决于是否有 <!DOCTYPE html> 声明,没有的是旧版的,有声明的是w3c之后的,为保证原来的页面也可以正常运行,而采用不同的模式// BackCompat 对应 quirks mode(怪异模式)
// CSS1Compat 对应 strict mode(标准模式)
console.log(window.top.document.compatMode); //CSS1Compat
|