一直搞不懂chrome console市场出现的undefined
怎么来的,今天查了下也没有很详细的解释,搞了半个上午总算有点明白了,而且还意外入门了chrome的一些高级用法(不务正业)。
症状
在chrome>console>输入框输入一下代码;
情况1 | 情况2 | 情况3 |
---|---|---|
var oo=10 |
eval("var cc=10;") |
1 |
结果1 | 结果2 | 结果3 |
---|---|---|
undefined |
undefined") |
1 |
原理
eval()只有一个参数。如果传入的参数不是字符串,它直接返回这个函数。如果参数是字符串,它会把字符串当成JavaScript代码进行编译,如果编译失败者抛出一个语法错误异常。如果编译成功,则开始执行这一段代码,并返回字符串中的最后一个表达式会或语句的值,如果最后一个表达式或语句没有值,则最终返回
undefined
。如果字符串抛出一个异常,这个异常将把该调用传递给eval()。
个人理解
在输入框直接输入代码与在eval("%s")【伪】%s输入代码的效果保持一致,应该(应该)可以说明console使用eval()解析输入的代码。所以当一段代码没有返回值的时候,eval返回undefined
;
收货
以后看见这个
也知道他是啥了