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

来源:6-2 [JavaScript]函数声明与表达式

hi君竹

2017-05-20 11:17

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))();
})();

写回答 关注

4回答

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

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

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

    hi君竹

    非常感谢!

    2017-05-21 20:52:32

    共 1 条回复 >

  • 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;')这有是何作用?

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281101 学习 · 1020 问题

查看课程

相似问题