javascript - 在 Javascript 中,为什么要写 'b || (b = a);' ?

标签 javascript

深入研究我的 webGL 项目中使用的 glMatrix-0.9.5.min.js 源代码,我遇到了几行这样的代码...

vec3.negate = function (a, b)
{
    b || (b = a); // <-- What exactly does this line do?

    b[0] = -a[0];
    b[1] = -a[1];
    b[2] = -a[2];

    return b;
};

不确定该代码在做什么,考虑到它是第三方文件,即使它是一个错误,但我也知道我还没有完全跟上 JavaScript 作为一种语言的速度。 (例如,我因此才了解协议(protocol)。奇怪/有趣的概念。)

那么这是否有效?如果有效,它到底在做什么?

我猜它是以下内容的简写,表示“如果未设置 'b',请将其设置为 a”

if(!b)
{
    b = a;
}

也可以只写

if(!b) b = a;

我认为这要清楚得多。但同样,我在猜测这到底意味着什么/做什么。可能是错误的。

跟进:

这两个if条件是否相等?

if(!b){ ... }

if(b == undefined){ ... }

我想知道“undefined”和定义的值“null”之间是否存在复杂性

最佳答案

更好的写法是

b = b || a;

关于javascript - 在 Javascript 中,为什么要写 'b || (b = a);' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37169711/

相关文章:

javascript - TypeScript,遍历字典

javascript - 获取光标书写位置

javascript - 如何使标题图像响应屏幕尺寸的变化?

javascript - OpenWeatherMap API 仅预测几天

javascript - 仅允许在 View 和模型值中使用字母字符的指令

javascript - 如何在 phonegap 的 ios7 之上添加永久线路

javascript - 如何防止在页面加载时执行JavaScript函数?

javascript - 省略号过滤器vueJs

javascript - 动画gif的速度很慢

javascript - 如何从 React 中读取和写入 firestore 中的 map 值?