📜  4.6.3.操作顺序¶ - Javascript (1)

📅  最后修改于: 2023-12-03 15:13:08.606000             🧑  作者: Mango

4.6.3. 操作顺序 - Javascript

在Javascript中,代码的操作顺序非常重要,尤其是在涉及到多个变量和函数调用时。下面是一些关于操作顺序的重要概念和建议。

优先级和结合性

Javascript中的操作符按照优先级和结合性的规则执行。优先级高的先执行,结合性从左到右或从右到左。以下是一些常见操作符的优先级和结合性:

| 操作符 | 描述 | 优先级 | 结合性 | | ----------- | -------------------------------------------------- | ------ | ------ | | () | 分组 | 20 | N/A | | ! | 非 | 17 | R | | * / % | 乘法、除法、求余 | 14 | L | | + - | 加法、减法 | 13 | L | | < <= > >= | 小于、小于或等于、大于、大于或等于 | 11 | L | | == != === !== | 等于、不等于、严格等于、严格不等于 | 10 | L | | && | 逻辑与 | 6 | L | | || | 逻辑或 | 5 | L | | = += -= *= /= %= <<= >>= &= |= ^= &&= ||= , | 赋值和复合赋值运算符 | 3 | R |

(注:N/A表示无、L表示从左向右结合,R表示从右向左结合)

函数调用

函数调用是Javascript中常见的操作之一。函数的调用顺序是按照函数所在的表达式的优先级和结合性执行的。例如:

function foo() {
    return 42;
}

var x = foo() * 2 + 1;

该代码首先调用foo函数,然后将返回值乘以2,最后再加1。因此x的值为85

对象属性访问

在Javascript中,可以使用.[]运算符访问对象的属性。.运算符具有更高的优先级和从左到右的结合性,而[]运算符具有更低的优先级和从左到右的结合性。因此,以下代码:

var obj = {
    a: {
        b: 42
    }
};

var x = obj.a.b;
var y = obj["a"]["b"];

等价于:

var obj = {
    a: {
        b: 42
    }
};

var tmp = obj["a"];
var x = tmp["b"];
var y = obj["a"]["b"];
表达式求值

Javascript的表达式求值顺序是从左到右。因此,以下代码:

var a = 1, b = 2, c = 3;
var x = a + b * c;

等价于:

var a = 1, b = 2, c = 3;
var tmp = b * c;
var x = a + tmp;
使用括号

为了避免求值顺序和优先级的问题,可以使用括号强制修改它们。括号具有最高的优先级,因此可以用于明确指定表达式的求值顺序。例如:

var a = 1, b = 2, c = 3;
var x = (a + b) * c;

该代码将先计算a + b,再将结果乘以c,因此x的值为9

总之,在Javascript中,了解操作符的优先级、结合性以及表达式求值顺序是非常重要的。为了避免错误,请使用括号来强制修改它们。