我有一个简单的日志功能:
function log(str) {
console.log('logged: ', str);
}
Run Code Online (Sandbox Code Playgroud)
如果我在没有括号的情况下调用它(目前使用Chrome的开发工具)并传入模板字符串,如下所示:
log`foo`
Run Code Online (Sandbox Code Playgroud)
输出是: logged: ["foo", raw: Array[1]]
如果我用括号称呼它,
log(`foo`)
Run Code Online (Sandbox Code Playgroud)
输出是: logged: foo
为什么在Javascript中使用模板字符串调用函数没有括号?发生了什么导致结果与用括号调用结果不同?
javascript ecmascript-harmony ecmascript-6 template-strings ecmascript-2015
我试图弄清楚我在Node v4.1.1(V8 v4.5.103.33)中看到的关于super和箭头函数的某些行为是否是指定行为,如果是这样(或者实际上,如果不是),它在哪里它说它应该(或不应该)在我所拥有的各种情况下工作的规范.
简言之:使用super箭头函数(inner)内的另一个箭头功能(outer)内的方法的工作,除非 outer有参数还是变量inner即使引用,inner引用参数或变量method.我想知道规范对此的说法:它是否应该一直有效,即使在V8失败的情况下?没有时间?只有在V8目前让它工作的特定情况下,而不是它不在哪里?
这是一个MCVE:
"use strict";
class Parent {
show(msg) {
console.log(`Parent#show: ${msg}`);
}
}
class Child extends Parent {
method(arg) {
let outer = (x) => {
console.log(`outer: x = ${x}`);
let inner = () => {
super.show(`arg = ${arg}, x = ${x}`);
};
inner();
};
outer(42);
}
}
new Child().method("arg"); …Run Code Online (Sandbox Code Playgroud) 因为我读这里,ES2015可以导出var,const,let,function,class和default.
export var myVar1 = ...;
export let myVar2 = ...;
export const MY_CONST = ...;
export function myFunc() {
...
}
export function* myGeneratorFunc() {
...
}
export class MyClass {
...
}
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么.在我的外行看来,应该有named exports和default exports.
您输出的类型似乎并不重要.我的意思是,当你export default,你指定类型?不,你没有,它的工作原理.此外,它还能有什么区别出口var或let?它有什么区别export const?导入模块时,无论如何它都是不可变的(AFAIK).
那么,为什么必须指定导出的类型?
javascript commonjs node-modules ecmascript-6 ecmascript-2015