84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
node版本7.40
7.40
测试代码
var company = 'Yahoo'; console.log(global.company); console.log(company);
直接在node命令行中执行:
放在单独的js文件中执行:
按理应该都输出Yahoo的,为什么在文件中执行的console.log(global.company);是undefined?
Yahoo
console.log(global.company);
欢迎选择我的课程,让我们一起见证您的进步~~
你有兴趣可以去看看webpack打包之后的文件长啥样。node的机制其实是类似的,每个文件都有自己的独自的作用域。所以你用var声明的变量其实并没有挂在全局,而是在当前文件的作用域中。你要真的想创建全局变量,你需要去掉那个var,此时这个变量就自动隐式声明为全局,这个时候使用global才会看到它。
webpack
var
global
谢谢@xiaoboost的回答,用webstorm调试模式下个断点可以发现文件被改变了
你有兴趣可以去看看
webpack
打包之后的文件长啥样。node的机制其实是类似的,每个文件都有自己的独自的作用域。
所以你用
var
声明的变量其实并没有挂在全局,而是在当前文件的作用域中。你要真的想创建全局变量,你需要去掉那个
var
,此时这个变量就自动隐式声明为全局,这个时候使用global
才会看到它。谢谢@xiaoboost的回答,用webstorm调试模式下个断点可以发现文件被改变了