Sorry,大周末的搞一下标题党玩玩,但这个面试题倒是真的有坑,很sorry,这一次我掉进了第一个坑。
看问题一,
(function(xxx){
delete xxx;
return xxx;
})(1);
不要犹豫,现在就说,脱口而出的说,结果是几?
看问题二,
(function(){
function xxx(){
return 666;
}
return xxx();
function xxx(){
return 999;
}
})();
请再次马上立刻脱口而出,结果666?还是6翻了的999?
先自抽,问题一我答错了。
// 结果请往下拉 //
这二个问题都是自执行的,但第一个是1,因为那个delete...,看图吧,
第一个问题中,传入的是1是基本数据类型,无法删除。
第二个问题相对简单些,无非是函数的变量提升嘛,二个xxx函数定义都会被提升到return之前被定义,所以后面的就覆盖前面的了,结果就999了