How Does: "(a = b) != c" work in Javascript?
How Does: "(a = b) != c" work in Javascript?
我正在查看jQuery代码$.extend()
我发现了这个:
if ( (options = arguments[ i ]) != null ) {
// Extend the base object
我想知道如果我们把options = arguments[i]
移出括号会发生什么?
a = b
将b
赋值给a
,返回b
。因此,(a = b) != c
将把b
赋值给a
,然后检查b != c
。括号是,否则,!=
将在=
之前求值,因为运算符优先级(比较在赋值- source之前求值)
a = b!= c
的作用如下:
a = (b != c)
因为=
运算符在所有运算符中优先级最低。
。
b = 5
c = 10
a = b != c
>>> false
>>> a will have false value here
这是优先级图和演示
对于(options = arguments[ i ]) != null
, options
将被赋值为argument[ i ]
,然后与null
进行比较。
赋值的优先级低于相等,这意味着
arguments[i] != null
将在
之前处理options = arguments[i]
给出与期望结果不同的结果。为了更好地理解它,请查看这里并阅读操作符优先级
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 检查onsubmit doenst work jquery contactform上的函数
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中