为什么输出hello world 和undefined?

alert(typeof((function(){
            alert('Hello World!');
        })()
    ));
阅读 2.8k
3 个回答

使用typeof param首先会对param进行求值;在下面这个表达式中,

typeof(
    (function(){
        alert('Hello World!');
    })()
)

显然,param就是

(function(){
    alert('Hello World!');
})()

这是一个立即执行函数,也就是首先定义了下面的这个匿名函数,

function(){
    alert('Hello World!');
}

然后用括号包起来直接进行调用,所以会弹出"Hello World!";因为没有return语句,所以这个方法执行完后的返回值是undefined,也就是下面的代码的执行结果为undefined

(function(){
    alert('Hello World!');
})()

所以param就是undefinedtypeof undefined的结果就是undefined,所以弹出undefined

function(){
            alert('Hello World!');
        }

没有返回值,所以 typeof (function () {...})()undefined

新手上路,请多包涵

这个写法是自执行函数,而它在最内部,所以,先执行它;

(function(){
    alert('hello world')
})()

而typeof()中,是一个自执行函数,没有任何返回值,是undefined,
所以,typeof(undefined)===undefined
所以alert(undefined)

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