一、delete的用法函数
(function(x){ delete x; console.log(x); })(1)
答案为1。delete通常用于删除对象的属性,删除后其结果为undefined;但其不能删除变量。delete若是能够删除 返回true;不能删除返回false。this
二、运算符code
var x=1; if(function f(){}){ x += typeof f; } console.log(x) a:"1undefined" b:"1function" c:NaN d:报错
答案为"1undefined"。条件判断为假的状况有:0,false,'',null,undefined,未定义对象。函数声明写在运算符中,其为true,但放在运算符中的函数声明在执行阶段是找不到的。另外,对未声明的变量执行typeOf不会报错,会返回undefined对象
三、instanceofio
function f(){ return f; } new f() instanceof f;
答案为"false"。a instanceof b 用于检测a是否是b的实例。若是题目f中没有return f,则答案明显为true;而在本题中new f()其返回的结果为f的函数对象,其并非f的一个实例。console
四、考眼力function
(function(foo){ return typeof foo.bar; })( {foo:{bar:1}} )
答案为"undefined"。传递进去的参数并无bar属性变量
五、thisco
var foo = { bar: function(){ return this.baz; }, baz:1 } console.log(typeof (f=foo.bar)());
答案为"undefined"。将foo.bar赋值给f,至关于f(),故其this指向windowlet