4.13.5节中的"JavaScript:The Definative Guide,第6版"一书指出 -
"i=0, j=1, k=2; evaluates to 2"
Run Code Online (Sandbox Code Playgroud)
但当我显示这样的价值 -
var x = i=0, j=1, k=2; alert(x);
Run Code Online (Sandbox Code Playgroud)
要么
alert(i=0, j=1, k=2);
Run Code Online (Sandbox Code Playgroud)
0显示该值.我进行了实验,并i显示了设置的值.
这本书似乎错了.可以通过说这句话解释这本书的意思evaluates to 2吗?这是错的吗?
谢谢!
在alert( i = 0, j = 1, k = 2 );逗号中分隔函数参数.
在一般表达式中,它就像书中说的那样:
alert( ( i = 0, j = 1, k = 2 ) );
Run Code Online (Sandbox Code Playgroud)
请注意,所有的书都说是表达式"i = 0, j = 1, k = 2" "evaluates to 2"在许多上下文中,您需要将该表达式放在括号内,以使其成为单个独立的表达式,就像本书所要求的那样.
在变量声明中,逗号再次具有特殊行为.它允许您编写较短的声明,因为您不必重复var:
var a; var b; var c;并且var a, b, c;是平等的.所以是var a = 5; var b = 6; var c = 7;和var a = 5, b = 6, c = 7;
逗号在数组和对象文字中也有特殊行为:
var a = [1,2,3] //Creates an array with elements 1, 2 and 3
var a = [(1,2,3)] //Creates array with one element: 3
var b = {
key: value, //Comma is separating the key-value pairs.
key2: value2
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |