一 null和undefined的区别
null的意思是这里不应该有值,它是一个空对象指针,所以typeof检测出来,会是Object。
undefined的意思是这里应该有值,但是没有定义。比如声明一个变量但没有赋值。
后者派生自前者,验证两者的时候,一定要用严格等于===。undefined == null会返回true。
二 JS有几种数据类型
5种简单数据类型:null undefined string number bollean
1中复杂数据类型:object
三 下面几项输出什么
alert(typeof(null));
alert(typeof(undefined));
alert(typeof(NaN));
alert(NaN==undefined);
alert(NaN==NaN);
var str="123abc" ; alert(typeof(str++));
alert(str);
(NaN,即not a number,用来表示本来要返回数值的操作数未返回数值的情况,有相关的isNaN函数)
四 pop(),shift(),push(),unshift()都有什么功能
1 pop(),移除数组最后一个值,并返回删除的元素
2 push(),在数组末尾添加一个值,并返回新数组长度
3 shift(),移除数组第一个值,并返回删除的元素
4 unshift,在数组第一个位置添加一个值,并返回新数组长度
五 数组的迭代方法都有什么
迭代方法都有两个参数,第一个是在每一项上运行的函数,第二个是规定这个函数this的指向。这个函数可以有三个参数,第一个是正在运行的这一项,第二个是项的位置,第三个是数组本身。
1 forEach,对每一项运行一个函数,没有返回值。
2 filter,对每一项运行一个函数,结果
3 map,对每一项运行一个函数,然后将运行过的作为一个新数组返回。
4 evevry,对每一项运行一个函数,每一项的运行结果都为true,才返回true。
5 some,对每一项运行一个函数,任意一项运行结果为true,就返回true、
(注意filter和map的函数里最后都有return一个值)
六 谈谈你JS中This的理解
This是函数中的特殊对象,它引用的是函数执行的环境对象,(基于函数的执行环境绑定的)是在函数调用时绑定的 。
比如在全局函数局中this指向window,函数是某个对象的方法时this指向这个对象。但是匿名函数的执行环境具有全局性,所以它的This指向window。
(另外,函数在搜索this时,只会搜到它自己的活动对象,不会访问外部函数中的this。不过可以把外部的this保存在闭包能访问的变量里)
七 什么是严格模式
八
var foo = 1; function(){
console.log(foo);
varfoo = 2;
console.log(foo);
}
答案:输出undefined 和 2