表达式描述计算并计算为值。
> a=2 // 2 is an expression in assignment statement
> 3 // is an expression
> [1,2] // is an expression
> {'a':2, 'b':[1,2,3]} // is an expression
> mul(add(4, mul(4, 6)), add(3, 5)) // is an expression
> let result = sum(1,2) // sum(1,2) is an expression in this assignment statement, only because it returns value 3
> console.log(materials.map(material => material.length)); // material => material.length is a sub-expression
> console.log(materials.map(material => console.log('abc'))); // material => console.log('abc') is not an expression
> Math.random() // random() is a method expression
> console.log('xyz') // log('xyz') is a method expression
> new Date(2012, 11) // is an expression
在上面的示例中,sum(1,2)
,material => material.length
& mul(add(4 , mul(4, 6)), add(3, 5))
是调用表达式,因为它们遵循此评估规则:
呼叫表达式的评估程序:
评估运算符,然后计算操作数子表达式
- 醇>
将作为operator子表达式值的函数应用于作为操作数子表达式值的参数
material => console.log('abc')
未遵循评估规则
Answer说,表达式和命令之间缺乏区别可以实现概念统一(参见Referential transparency)和bottom-up结构。
是函数文字(下)
function(){
console.log('output')
}
中的表达式
let f = function(){
console.log('output')
}
?为什么我们使用术语function expression?
答案 0 :(得分:3)
是的,它是匿名函数表达式,您可以将其分配给变量f
。
其他示例将命名为函数表达式和IIFE(立即调用函数表达式)。
//anonymous function expression
var f = function() {
return 1;
}
//named function expression
var g = function bar() {
return 1;
}
//IIFE
(function helloWorld() {
alert("Hello world!");
})();
在上一个示例中,您可以看到function
关键字包含在括号中。如果没有括号,则将其视为语句而不是值,并会产生语法错误。
答案 1 :(得分:2)
首先要理解的是,在JavaScript中,函数会戴上很多帽子:
所以,如果您接受以下表达式:
3 // is an expression
[1,2] // is an expression
{'a':2, 'b':[1,2,3]} // is an expression
然后,您可以开始了解如何:
let foo = function(){}
也是一个表达式 - 一个函数表达式。函数是值。
来自 MDN :
函数表达式非常相似且几乎相同 语法作为函数语句(有关详细信息,请参阅函数语句)。 函数表达式和函数之间的主要区别 statement是函数名,可以在函数中省略 用于创建匿名函数的表达式。函数表达式可以 用作运行的IIFE(立即调用的函数表达式) 一旦定义。另见有关函数的章节 更多信息。
来自MDN specifically on Expressions :
表达式
表达式是解析为值的任何有效代码单元。
每个语法上有效的表达式都会解析为某个值但是 从概念上讲,有两种类型的表达方式:副作用 (例如:为变量赋值的那些)和那些在变量中的变量 某种意义上的评价并因此决定一个价值。
表达式x = 7是第一种类型的示例。这个表达 使用=运算符将值7赋给变量x。该 表达式本身的评估结果为7。
代码3 + 4是第二种表达类型的示例。这个 表达式使用+运算符将三个和四个一起添加 将结果七分配给变量。
JavaScript具有以下表达式类别:
- 算术:求值为数字,例如3.14159。 (通常使用算术运算符。)
- 字符串:计算为字符串,例如" Fred"或" 234"。 (通常使用字符串运算符。)
- 逻辑:计算结果为true或false。 (通常涉及逻辑运算符。)
- 主要表达式:JavaScript中的基本关键字和一般表达。
- 左侧表达式:左侧值是作业的目的地。
由于函数 是 值,它们是表达式,与表达式3
的方式没有什么不同,因为3
是一个值。