问答详情
源自:6-2 [JavaScript]函数声明与表达式

构造函数访问到了局部变量和全局变量,这是怎么回事呢?

var popup = '模态框';
(function(){
   var call = '替换函数运行中的this指向、传参、运行';
   Function(console.log(popup,call))();
})();

加typeof 也能访问到 返回的是string

var popup = '模态框';
(function(){
   var call = '替换函数运行中的this指向、传参、运行';
   Function(console.log(typeof popup,typeof call))();
})();

提问者:hi君竹 2017-05-20 11:17

个回答

  • 敏而好学_
    2017-05-21 14:09:49
    已采纳

    javascript中函数内部可以读取全局变量,因此访问到了变量popup;

    变量call作用域是立即执行函数内部,因此立即执行函数内部的Function函数可以访问到

  • king0964
    2019-02-15 15:45:23

    Function里面的参数必须是字符串,Function(console.log(popup,call))();要改成Function('console.log(popup,call)')();才能实现老师的效果

  • 慕粉3645932
    2017-05-23 16:50:35

    可以访问到的

  • hi君竹
    2017-05-21 21:18:36

    听老师讲,说这个构造函数Function只能访问全局变量 是访问不到父函数局部变量的;而我这个写法却访问到了     如果说真访问不到的话就只能用''把Function里面包起来Function('console.log(typeof popup,typeof call;')这有是何作用?