以下代码输出什么
(function(x){
console.log(x);
var x =10;
function x(){}
}(100))
作答:
首先这是一个(function(){}()) 立即执行的匿名函数,x为接收的参数,100为传入的参数
乍一看,console.log(x) ,函数执行时传入了100,js是【逐行执行】,输出肯定是100....
再往下看,咦,又定义了一个x ,细心的可能会想,想坑我,哥可是知道【变量提升】的,这结果肯定是undefined
接着,后面又定义了 一个function x,有的朋友就发现了,函数声明,会前置在作用域的最前面,也就是说,在代码执行之前,x这个函数就已经定义了,这个时候输出的x应该是function x(){} 源码。
这道题理解的层次不一样,也决定了答案不一样!
答案1:10(我至今想不明白这个朋友是怎么想到这个答案的)
答案2:100 (只看透了立即执行匿名函数、传参、js逐行执行)
答案3:undefined(看到了变量提升)
答案4:function(){}(完全看透了整个题目的考点,函数声明前置)
分解代码:
(function(x){
function x(){}
var x;
console.log(x); // function x(){}
x = 10;
console.log(x); //10
}(100))
网友评论