为什么在JavaScript控制台声明变量会输出undefined?
JavaScript 控制台输入返回值逻辑说明
首先明确核心规则:JavaScript 控制台会默认返回你输入代码的求值结果,不同输入的返回值差异本质是 JS 本身的表达式/语句求值规则决定的。
三个示例的代码如下:
// 示例1 Input: "hello"; Output: "hello" // 示例2 Input: js = "hello"; Output: hello // 示例3 Input: let js = "hello"; Output: undefined
接下来分别解释每个示例的返回逻辑:
- 示例1:输入的
"hello"是字符串字面量表达式,表达式本身的求值结果就是这个字符串值,所以控制台直接返回该结果,不同控制台输出时可能会带双引号标识这是字符串类型。 - 示例2:输入的
js = "hello"是赋值表达式,JS 中赋值表达式的规则就是返回等号右侧的赋值内容,所以这里返回的结果就是"hello",部分控制台输出纯字符串值时不会展示外层引号,就显示为hello。补充说明:如果当前作用域没有提前声明js变量,这里会隐式创建全局变量js,但这个操作不影响赋值表达式本身的返回值规则。 - 示例3:输入的
let js = "hello"是变量声明语句,它不属于表达式,JS 中变量声明语句的求值结果固定为undefined,所以控制台返回undefined。
补充区分:JS 中所有表达式都会有明确的返回值,而语句不一定有返回值,变量声明、函数声明、if 语句这类语句的求值结果都是
undefined。
内容的提问来源于stack exchange,提问作者Minakshi Srivastava
相关产品推荐
相关产品推荐

