当我在Firebug中运行这段代码时:
var s ="test";
var S=new String(s);
S.len=4;
var t = S.len;
console.log(t);
typeof(S);
S;
它完全省略了typeof(S);
的输出
但如果我这样做:
var s ="test";
var S=new String(s);
S.len=4;
var t = S.len;
console.log(t);
console.log(typeof(S));
S;
它做得恰到好处,发生了什么?
答案 0 :(得分:3)
Firebug的日志为您提供 last 表达式(作为调试功能)的结果,而不是每个表达式。任何通过console.log()
的东西当然会出现,如果你这样做,你会看到这个
console.log(typeof (S));
但是它会抛出最后一个表达式和结尾的返回值,但不是前面的那个。
因此序列:
S;
typeof (S);
将产生typeof (S);
的返回值,没有别的和序列:
typeof (S);
S;
如果S
(只是S
),将产生返回值。由于结果未存储在代码中的任何位置,因此只运行表达式并取消上述任何上述序列的最后一个表达式中除之外的结果,其中 Firebug 显示结果是什么。这是为了方便运行jQuery表达式等。