直接写 a,b,c 报错,为什么换成1,2,3 就没问题?

clipboard.png
a,b,c 没定义可以理解,但是为什么1,2,3不会报错,难道是因为1,2,3这样的数字是内置的基本类型数据?好疑惑啊,求深度解析

阅读 3.1k
6 个回答

1 2 3 是基本数据类型 Number
你写 'a','b','c' 一样不会报错

a,b,c如果你不加''的话,js会理解为变量,而且你未定义的话就会报错,1,2,3 js会理解为int的数字。

逗号表达式会返回最后一项的值。

var tmp = (1,2,3,4,5);
console.log(tmp)    //5

a,b,c没有加引号,会被理解为变量。

1,2,3的类型是数字,可以直接打印出来的,不加引号的a,b,c会被解析成变量,而你的变量没有定义所以就报错,加了引号的'a','b','c'类型是字符串,就可以直接打印出来了

不同意楼上的,核心应该判断是不是一个合法的 逗号表达式

1, 2, 3 是值。
a, b, c 是(在你的例子里,不存在的)变量。

举个栗子:

在 JavaScript 中你可以:

var a = 1;

a;    // 这并不会对你的代码造成什么影响,但他的的确确返回了 a 的值 1。

或者你跳过了赋值,直接:

1;    // 这并不会对你的代码造成什么影响,但他的的确确返回了 1。
'a';  // 这并不会对你的代码造成什么影响,但他的的确确返回了 'a'。
true; // 这并不会对你的代码造成什么影响,但他的的确确返回了 true。

它们都返回了你所请求的值,你只是没有把这个值保存起来而已。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题