Javascript 为什么这段代码给了我不正确的行号?

Javascript 为什么这段代码给了我不正确的行号?,javascript,Javascript,我抛出了一个错误,我注意到Stackoverflow和JSFIDLE在堆栈跟踪上都给了我错误的行号 函数foo(){ 让stackTrace=(新错误()).stack; console.log(stackTrace); } foo()行号从文件的开头开始计算,而不是从脚本的开头开始计算。因此,当JavaScript位于标记中而不是外部.js文件中时,行号从HTML文档的开头开始计算。这确保了当HTML中有多个脚本时,filename:linenumber引用是唯一的 堆栈片段将脚本放入这样的

我抛出了一个错误,我注意到Stackoverflow和JSFIDLE在堆栈跟踪上都给了我错误的行号

函数foo(){
让stackTrace=(新错误()).stack;
console.log(stackTrace);
}

foo()行号从文件的开头开始计算,而不是从脚本的开头开始计算。因此,当JavaScript位于
标记中而不是外部
.js
文件中时,行号从HTML文档的开头开始计算。这确保了当HTML中有多个脚本时,
filename:linenumber
引用是唯一的


堆栈片段将脚本放入这样的标记中,然后将其加载到iframe中,因此您可以获得更高的计数。

行号从文件的开头开始计算,而不是从脚本的开头开始计算。因此,当JavaScript位于
标记中而不是外部
.js
文件中时,行号从HTML文档的开头开始计算。这确保了当HTML中有多个脚本时,
filename:linenumber
引用是唯一的


堆栈片段将脚本放入这样的标记中,然后将其加载到iframe中,因此得到更高的计数。

很可能是因为这两个运行时环境都是沙盒。@ScottMarcus我已经检查了JSFiddle的iframe。它使用tag将代码插入HTML。当您单击控制台中的
js:13
(真实的代码,而不是代码段下面的代码)时,您将看到行号。它从HTML的开头开始计数,而不是从
标记的开头开始。@Barmar是的。我将要写一个答案来检测返回值是否被丢弃。这个问题很有帮助。很可能是因为这两个运行时环境都是沙盒的。@ScottMarcus我已经检查了JSFiddle的iFrame。它使用tag将代码插入HTML。当您单击控制台中的
js:13
(真实的代码,而不是代码段下面的代码)时,您将看到行号。它从HTML的开头开始计数,而不是从
标记的开头开始。@Barmar是的。我将要写一个答案来检测返回值是否被丢弃。这个问题很有帮助。我尝试使用“document.documentElement.innerHTML”以编程方式解析行号,但它提供了Devtools没有的CSS部分。我尝试使用“document.documentElement.innerHTML”以编程方式解析行号,但它提供了Devtools没有的CSS部分。