JavaScript 关于面试题

请写出弹出值,并解释为什么。

~function () {

    alert(a);

    a();

    var a = function () {

        console.log(1);

    }


    function a() {

        console.log(2);

    }


    alert(a)

    a();

    var c = d = a;

}();


alert(d); 

alert(c); 


慕盖茨4494581
浏览 928回答 3
3回答

HUX布斯

包括打印和alert的值如下:1、function a() {   console.log(2); }2、23、function a() {   console.log(1); }4、15、function a() {   console.log(1); }原因: var c = d = a;从右向左执行,d=a,d没有使用var声明,是一个全局变量,方法外部可访问。6、报错,原因:c是函数内部的变量,外部访问不到的,外部变量c是undefined。其它的就不一一解释原因了,本质就是变量提升和函数声明提升的问题。

慕工程0101907

1: function a() {console.log(2);}2,3 var a = function () {console.log(1);}4: 报错因为 函数提升优于变量提升 且 变量提升只声明不赋值, 局部变量作用于局部

HUWWW

实际上,这段代码是这么跑的:~function () {//hoistingfunction a() {    console.log(2);}var a;alert(a);a();a = function () {    console.log(1);}alert(a)a();d = a;var c = d;}();alert(d); alert(c);
打开App,查看更多内容
随时随地看视频慕课网APP