求解几道面试题,js的

`(function(x){
  delete x;
  return x;
})(1)//为什么返回1,不是delete了吗?`
var x = 1;
if(function f(){}){
  x += typeof f;
}
x;//为嘛返回 1underfind?
阅读 2.3k
3 个回答
第一个,变量是不能删除的吧  ;
第二个,function f(){}做了隐形转换,相当于if(Boolean(function f(){})){};所以f的函数声明是在Boolean的函数作用域里的,并不是全局

delete删除的是属性不是变量。
转换为boolean值,楼上说的很对+1。

if(function f(){}){
alert(typeof f); //undefined
}

&

function f(){}
alert(typeof f); //function

作用域不同,前者不在全局作用域中,所以取不到

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题