js运算符优先级

2018-01-01  本文已影响0人  孙新强
  1. 优先级

运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行

  1. 结合性

结合性决定了拥有相同优先级的运算符的执行顺序

  1. 汇总表

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

  1. 属性运算符 . 和 []
  1. object.property

property 必须是有效js标识符 不能以数字开头

如果对数字字面量使用方法,并且数字文字没有指数且没有小数点,请在方法调用之前的点之前留出空格,以防止点被解释为小数点

77 .toExponential();
// or
77
.toExponential();
// or
(77).toExponential();
// or
77..toExponential();
// or
77.0.toExponential();
// because 77. === 77.0, no ambiguity
  1. [key] 如果key 不是字符串 会强转成字符串
var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
object[foo] = 'value';
console.log(object[bar]===object[foo]);//true
  1. new 运算符

当代码 new Foo(...) 执行时:

  1. 一个新对象被创建。它继承自Foo.prototype。

  2. 使用指定的参数调用构造函数Foo,并将 this绑定到新创建的对象。

  3. new Foo 等同于 new Foo(),只能用在Foo 不传递任何参数的情况。

  4. 如果构造函数返回了一个“对象”(返回其他类型无效),那么这个对象会取代整个new出来的结果。

   如果构造函数没有返回对象,那么new出来的结果为步骤1创建的对象。
(一般情况下构造函数不返回任何值,不过用户如果想覆盖这个返回值,可以自己选择返回一个普通对象来覆盖。当然,返回数组也会覆盖,因为数组也是对象。)

优先级面试题:https://www.v2ex.com/t/351261

上一篇下一篇

猜你喜欢

热点阅读