javascript - 方法调用中使用逗号表达式是什么意思,比如 `var proc = (0, _postcss2.default)();`

标签 javascript javascript-objects

<分区>

查看 cssnano 源代码,我遇到了这一行

var proc = (0, _postcss2.default)();

根据我的测试,它似乎做同样的事情

var proc = _postcss2.default();

为什么 cssnano 使用第一种语法分配 proc

最佳答案

有一个细微的区别,根据两次不同的调用,this 的值在default 中是不同的。考虑以下代码:

var _postcss2 = {
    default: function() {
        return this;
    }
};

var proc = (0, _postcss2.default)();
console.log(proc); // proc === window (or undefined in strict mode)

var proc = _postcss2.default();
console.log(proc); // proc === _postcss2

_postcss2.default() 调用 default 作为 _postcss2 对象的方法,并相应地设置 this,但是 (0, _postcss2.default)(); 不会,并且 this 在非严格模式下将是 window,并且 undefined 在严格模式下。

方式the comma operator有效,是执行所有表达式,但只返回最终表达式,因此 0, 是一个简短的无意义表达式,使用逗号运算符获取函数引用本身,而不将其设置为变量优先。

如果这在这种特殊情况下有所不同,我不能不看代码本身就说。

corresponding line from the source code对于此代码,let proc = postcss();postcss 是 ES6 导入。此特定代码由 ES6 转译器生成,可能是 Babel。

关于javascript - 方法调用中使用逗号表达式是什么意思,比如 `var proc = (0, _postcss2.default)();`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223306/

相关文章:

javascript - 根据用户访问网站的方式(cookie)以不同方式显示网站内容?

javascript - 使用字符串数组创建多级对象,将数组解析为JS对象

javascript - 强制 Javascript 函数调用调用 Function.prototype.call 方法

javascript - Angular 中的滑动菜单无法通过 $provider 正常运行

php - 将 Backbone.js 模型插入 MySQL 数据库

javascript - 如何在单击按钮时从数组中删除项目

JavaScript ES6 转换复杂对象的更好方法

javascript - 是否可以在创建屏幕截图之前使用 Puppeteer 修改 DOM 中的元素?

javascript - 合并 Javascript 对象

使用除法运算符的 JavaScript 除法错误