【发布时间】:2018-08-04 14:42:10
【问题描述】:
在 chrome 开发人员工具中,当我键入
a = 3 时会记录 3 但
var a = 3 记录 undefined。
为什么第一个语句返回 3 而第二个不返回?
【问题讨论】:
-
a = 3是一个表达式。
标签: javascript developer-tools
在 chrome 开发人员工具中,当我键入
a = 3 时会记录 3 但
var a = 3 记录 undefined。
为什么第一个语句返回 3 而第二个不返回?
【问题讨论】:
a = 3 是一个表达式。
标签: javascript developer-tools
因为它就是这样。
以var 开头的语句是一个声明。声明本身并没有价值。他们告诉计算机做某事(创建一个变量,可以选择一些初始值)。
但是赋值表达式是不同的。 a = b 计算为(或“具有”)a 的新值,以便允许链接,例如 a = b = c = d。
他们是否可以让var a = b 成为一个表达式并评估为什么?当然,可能。但是以这样的方式来扼杀语言语法绝对没有任何用处。
阅读编程语言中的语句和表达式。
【讨论】:
因为undefined 是var 语句的结果。
语句实际上并没有可以在你的代码中使用的“结果”,但是程序有一个最终结果,你在控制台中的单行代码作为一个程序被评估。
【讨论】:
eval“评估”一段代码并提供其结果的意义上,它是“评估的”。代码被评估为一个完整的程序,不一定是单个表达式。
var a = 3“肯定被评估过”,但鉴于它没有价值,显然不是这样。
eval 来执行它。例如:var x = eval("for (var i = 0; i < 10; i++) {i}"); console.log(x); // 9