美文网首页
Javascript运算符优先级和结合性

Javascript运算符优先级和结合性

作者: 虎妞先生 | 来源:发表于2018-10-08 19:50 被阅读0次

先放上mdn上关于运算符优先级关联性的汇总表

下面的表将所有运算符按照优先级的不同从高到低排列。

image

有一道题(摘自你不知道的JS(中卷))

var a =42;
var b = "foo";
var c = false;

var d = a && b || c ? c || b ? a : c && b : a;
d; //42

通过查询表格,我们可以把上面代码分解:

var d = ((a && b) || c ) ? (( c || b ) ? a :(c && b)) : a

| 6 | [逻辑与] | 从左到右 | … && … |
| 5 | [逻辑或] | 从左到右 | … || … |
| 4 | [条件运算符] | 从右到左 | … ? … : … |

逐一执行

(a && b) 结果为:''foo"
"foo" || c 结果为 :"foo"
第一个?中,"foo"为真值
(c || b)结果为:"foo"
第二个?中,"foo"为真值
a的值为42
最后结果为42

还有一道题(摘自segmentfault)

function Foo() {
  getName = function () {
    alert(1);
  };
  return this;
}
Foo.getName = function () {
  alert(2);
};
Foo.prototype.getName = function () {
  alert(3);
};
var getName = function () {
  alert(4);
};
function getName() {
  alert(5);
}

Foo.getName(); //2
getName(); //4
Foo().getName(); //1
getName(); //1
new Foo.getName(); //2
new Foo().getName(); //3
new new Foo().getName(); //3

执行Foo.getName()这个函数,输出2
先执行function getName(),在执行var getName = function,输出4,进行了一次覆盖
执行Foo()里的getName(),因为没有用var定义,所以该函数是定义在全局的,this也指向windows,此时覆盖掉以前的4,输出1
执行全局的getName, 输出1
new (Foo.getName)() .操作符优先级高于new(不带参数)优先级,输出2
(new Foo()).getName(); 如果是new (Foo().getName)(),那么在执行Foo()时,它是一个函数调用,优先级低于带参数的new,因此这样不行。那么只能是(new Foo()).getName(),输出3
new((new Foo()).getName)(),输出3

考察对this、原型链、函数对象、函数声明提前等一系列知识。

原文链接:yinzhuo.online

相关文章

  • 03-JS基础-运算符

    运算符的优先级 运算符的结合性JavaScript中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自...

  • 运算符优先级和结合性

    运算符优先级和结合性 运算符的优先级使得一些运算符优于其他运算符,高优先级的运算符会被先计算。 结合性定义了具有相...

  • C语言运算符

    运算符的优先级和结合性 运算符的种类 算数运算符有+ - * / % (具有左结合性) 算数运算符注意事项...

  • 04-运算符

    算数运算符 1.什么是算数运算符?- + - * / % 2.算数运算符的优先级和结合性* / % 优先级要高...

  • C运算符的优先级与结合性

    C语言运算符优先级与结合性:同一优先级的运算符,运算次序由结合方向所决定。 c语言运算符优先级存在的问题(按照常规...

  • js运算符优先级

    优先级 运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行 结合性 结合性决定了拥有相同优...

  • Javascript运算符优先级和结合性

    先放上mdn上关于运算符优先级关联性的汇总表 下面的表将所有运算符按照优先级的不同从高到低排列。 有一道题(摘自你...

  • Bash 的算术运算符

    Bash 中的算术运算符以及它们的优先级、结合性和值都与 C 语言相同。下面是按照优先级从高到低排列的运算符。 本...

  • C运算符优先级

    优先级记忆参考表 (防遗忘、防原网址失效) 下表列出 C 运算符的优先级和结合性。运算符从顶到底以降序列出。 --...

  • 运算符

    运算符的优先级及结合方向 不知道优先级的时候最直接的办法就是——查表!上图 算术运算符 注意: %运算符优先级和*...

网友评论

      本文标题:Javascript运算符优先级和结合性

      本文链接:https://www.haomeiwen.com/subject/nnijaftx.html