var a = 1;
var b = {
a : 2,
c : function () {
console.log(this.a);
}
};
b.c(); // logs 2
(b.c)(); // logs 2
(0, b.c)(); // logs 1
Run Code Online (Sandbox Code Playgroud)
第一个是可以理解的,因为"this"指的是Object"b".但为什么第二个会记录相同的结果呢?我认为"this"应该指向全局执行上下文.第三个,似乎逗号运算符影响执行上下文.
使用一个的原因
(0, foo.fn)();
Run Code Online (Sandbox Code Playgroud)
是切断绑定:this将不再foo绑定到全局对象,而是绑定到全局对象。
但是,任何 JavaScript 代码(或 Google 的 JS 代码)都想削减绑定的原因是什么?(它是否是反模式?)
我在Webpack生成的libs中找到了这个符号,但我不明白它:
var a = (0, _parseKey2.default)(something)
Run Code Online (Sandbox Code Playgroud)
它(0, _parseKey2.default)代表什么?我不记得在功能参数的其他地方括号之间看到那些昏迷分隔的表达式,所以也许我只是缺少一些简单的东西.
谢谢你的帮助.
只需检查Google的JavaScript代码,我就找到了这样的语法:
var myVar = function...;
(0, myVar)(args);
Run Code Online (Sandbox Code Playgroud)
你知道这个语法的含义吗?我找不到之间的差异
(0, myVar)(args);
和
myVar(args);.
举一个确切的例子,我们有
_.x3 = function (a, b) {
return new _.q3(20 * b.x + a.B.B.x, 20 * b.y + a.B.B.y)
};
Run Code Online (Sandbox Code Playgroud)
然后
this.ta = new _.s3((0, _.x3)(this.fa, this.B.B), 0);
Run Code Online (Sandbox Code Playgroud) 我注意到,巴贝尔 transpiled
import { install } from 'source-map-support';
install();
Run Code Online (Sandbox Code Playgroud)
成
var _sourceMapSupport = require('source-map-support');
(0, _sourceMapSupport.install)();
Run Code Online (Sandbox Code Playgroud)
为什么babel0在调用install函数时使用逗号运算符作为第一个表达式?
我正在阅读react-jsonschema-form的代码.我遇到了以下几行,我无法理解.
var formData = (0, _utils.getDefaultFormState)(schema, props.formData, definitions);
Run Code Online (Sandbox Code Playgroud)
第一个括号内的内容如何传递参数(schema,props.formData等)的函数?
我在Babel从这个源代码生成的代码中遇到了这个问题.它似乎在某种程度上保护了一个必需的功能.
(0, _utilities.validateNextState)(nextDomainState, reducerName, action);
Run Code Online (Sandbox Code Playgroud)
我理解括号中的逗号语句如何丢弃0并返回validateNextState函数,但为什么不这样做:
_utilities.validateNextState(nextDomainState, reducerName, action);
Run Code Online (Sandbox Code Playgroud)
我的猜测是一种保护(如闭包保护范围,或者setTimeout使函数调用异步),但无法弄清楚它的用途是什么.
var type = (0, _reactIs.isMemo)(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;
Run Code Online (Sandbox Code Playgroud)
(0, _reactIs.isMemo)真的让我很困惑。这个东西的意思是什么?
ps:我知道(0, _reactIs.isMemo)这个表达式的值是_reactIs.isMemo
查看 cssnano 源代码,我遇到了这一行
var proc = (0, _postcss2.default)();
根据我的测试,它似乎与
var proc = _postcss2.default();
为什么 cssnanoproc使用第一种语法进行赋值?