Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我们要定义“一个”呢;var console=window.console&引用;在某些情况下(例如运行测试)?_Javascript_Phantomjs - Fatal编程技术网

Javascript 为什么我们要定义“一个”呢;var console=window.console&引用;在某些情况下(例如运行测试)?

Javascript 为什么我们要定义“一个”呢;var console=window.console&引用;在某些情况下(例如运行测试)?,javascript,phantomjs,Javascript,Phantomjs,我认为这可能与使用PhantomJS的测试有关,测试将由于一些console.log而失败,我需要写一行: var console = window.console; 在IFFE内部的顶部,例如: (function() { var console = window.console; // ... }()); 这有点奇怪。首先,PhatomJS不是基于webkit吗?我认为console和console.log都是定义的 第二,我认为如果定义了window.console,

我认为这可能与使用PhantomJS的测试有关,测试将由于一些
console.log
而失败,我需要写一行:

var console = window.console;
在IFFE内部的顶部,例如:

(function() {
    var console = window.console;

    // ...
}());
这有点奇怪。首先,PhatomJS不是基于webkit吗?我认为
console
console.log
都是定义的

第二,我认为如果定义了
window.console
,我们使用
var console=window.console设置它
那么实际上,如果我们没有定义本地
控制台
,当遇到
控制台
时,浏览器将自动解析为
窗口。控制台
,因为全局环境是
窗口

我认为如果
console.log(…)
语句被
window.console.log(…)
替换,那么
var console=window.console将不需要


那么为什么行
var console=window.console以及它有助于解决什么问题?

在定义了
window.console
的情况下,该行无效


如果未定义
window.console
,则将
console
定义为功能范围内的有效标识符。如果没有该行,标识符
console
将产生一个ReferenceError,但是
window.console
只会让您
未定义

因此,如果该行还不是现有标识符,则该行定义
console
;如果该行是现有标识符,则该行使用全局
console
的值


因此,我们可以得出结论,在您的测试环境中,
window.console
没有定义。

它会说
console
没有定义并且测试失败,但是为什么
console.log(123)
在没有
var console=window.console的情况下会失败需要澄清的是:控制台输出实际工作吗?
console.log
是否也在任何地方定义?
console.log()
不起作用,除非使用
window.console.log()
,或者使用
var console=window.console第一个@動靜能量 有趣的在这种情况下,
window
不能是此处的全局对象。您可以使用
var myglobal=Function('returnthis')()检查全局对象是什么(),并比较
myglobal==window
。您不能只
console.log(this)
或选中
this==window