• AbyssKR
    2019-04-09
    “逻辑与表达式和逻辑或表达式”一节中,第二个例子 false && undefined; 的结果为 false
     1
     43
  • 阿成
    2019-04-08
    优先级由高到低:
    1 ()
    2 ./[] 左
    2 new MemberExpression Arguments
    3 new MemberExpression 右
    4 () 函数调用 左
    5 ++/--
    6 +/-/~/!/delete/typeof/void/await 右
    7 ** 右
    8 *///% 左
    9 +/- 左
    10 << >> >>> 左
    11 < > <= >= instance of in 左
    12 == === != !== 左
    13 & 左
    14 ^ 左
    15 | 左
    16 && 左
    17 || 左
    18 ?: 右
    19 = 右
    20 , 左

    不过MDN上的一份整理是这样的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

    主要不同的地方集中在:
    1. 函数调用与New Expression的优先级顺序(上一课文中有一句不是很理解:而 Call Expression 就失去了比 New Expression优先级高的特性,这是一个主要的区分)
    2. ++/-- 前置和后置的优先级顺序(MDN上前置后置优先级是不同的)
    3. 缺少了 yield/yield*/...这三个运算符
    展开
    
     12
  • windliang
    2019-06-28
    -1 >> 1,-1 的补码是 1111 1111 ... 1111 1111 ,32 个 1,有符号右移,高位补 1,所以还是 1111 1111 ... 1111 1111 ,32 个 1,所以答案依旧是 -1。

    -1 >>> 1,-1 的补码是 1111 1111 ... 1111 1111 ,32 个 1,无符号右移,高位补 0,所以是 0111 1111... 1111 1111 ,31 个 1,代表 2 ** 31 - 1= 2147483648 - 1 = 2147483647 。

    「在 JavaScript 中,二进制操作整数并不能提高性能」我觉得原因就是 js 数字不管整数还是小数都用 IEEE 754 浮点数标准。所以没有所谓的补码之说,也只有在进行位操作的时候,js 进行转换而已。

    之前总结了一篇补码的文章,分享一下.

    https://mp.weixin.qq.com/s/uvcQHJi6AXhPDJL-6JWUkw

    展开

    作者回复: 优秀。

     2
     4
  • 0xAC7
    2019-04-09
    标准里有些东西还是看不太懂,如果可以的话,希望老师在答疑的时候稍微讲解一下如何看懂标准
    
     2
  • K4SHIFZ
    2019-04-14
    老师,在ES5之前版本规范中,会提及JS的可执行代码分为全局、函数、Eval。但是在ES6之后版本规范中,再也不提及可执行代码的概念了,这是为什么呢?
     1
     1
  • 0xAC7
    2019-04-09
    评论不能发图片,我把不太明白的地方截图发到了语雀:
    https://cdn.nlark.com/yuque/0/2019/jpeg/119718/1554814331032-assets/web-upload/a51218b6-cd8a-4ac8-b71f-f8f6dbfeab36.jpeg
    麻烦老师移步看一下,谢谢。
    
     1
  • 阿成
    2019-04-07
    文中提到:
    按位或表达式由按位或运算符(|)连接相等表达式构成,按位或表达式把操作数视为二进制整数,然后把两个操作数按位做或运算。

    这里的相等表达式应该是按位异或表达式吧?
    (抱歉小编,之前打错了...)
    
     1
  • 0xAC7
    2019-04-06
    老师是在带我们过 ECMAScript标准,讲解很详细,基本能读懂标准了🌝
    
     1
  • 冬Don
    2019-11-14
    为什么 [undefined] == 0 是 true, [false] == 0是false呢

    作者回复: [undefined].toString();
    [false].toString();
    这么一看就知道为什么了。
    不过不同类型的双等号比较是JS里的糟粕,你学了也没什么用处。

    
    
  • 梧桐
    2019-09-25
    “逻辑与表达式和逻辑或表达式”一节中,第二个例子 false && undefined; 的结果为 false
    
    
  • 渴望做梦
    2019-07-31
    老师,这篇文章里面每个表达式介绍的时候都说是由上一个表达式构成的,对此我不是很理解,比如一元运算表达式是有更新表达式和一元运算符构成的,但是 typeof a 我怎么看也没看出来哪有更新表达式

    作者回复: a本身就是一个更新表达式

    
    
  • 依韵
    2019-07-19
    false && undefined 值为false
     1
    
  • study
    2019-05-30
    ExponentiationExpression,这个应该是指数表达式,不是乘法表达式吧。
     1
    
  • Error
    2019-05-20
    false && undefined; // false
    
    
  • 温木
    2019-05-06
    左移 n 位相当于乘以 2 的 n 次方,右移 n 位相当于除以 2 取整 n 次。
    异或运算有个特征,那就是两次异或运算相当于取消。所以有一个异或运算的小技巧,就是用异或运算来交换两个整数的值。
    
    
  • 乃乎
    2019-04-29
    “字符串和 bool 都转为数字再比较”
    这点很重要,也很对
    
    
  • 0xAC7
    2019-04-09
    比如本章和前一章对应标准中的 “12 ECMAScript Language: Expression”这一章,但有些内容不是很好懂,可能和标准的行文结构和规范有关,希望老师有时间可以稍做调拨,谢谢!

    作者回复: ES2018写的比较类似伪代码了,我这边还是从前端的理解角度出发来讲的。
    你具体哪里不懂,可以发出来看看。

    
    
我们在线,来聊聊吧