class SomeClass {
x: 5;
y = 10;
}
const c = new SomeClass();
alert(c.x + ' : ' + c.y);
为什么代码可编译但c.x
的值未定义?
使用:
声明类属性有什么影响?
答案 0 :(得分:2)
关于/verifyEmail
部分,尽管这是一个有效的javascript代码,但它没有多大用处。
这是一个javascript label
,它主要在循环上下文中使用(如果有的话)。
所以回答你的问题:
为什么代码可编辑
因为从技术上讲这是一个有效的JavaScript代码(但不是有效的x: 5
字段)。
但
class
的值未定义
因为c.x
是标签而不是类字段。
使用
声明类属性有什么影响x
你得到一个标签而不是一个类字段。
<小时/> 的附录强>
:
您会认为class SomeClass {
z = () => {
x: 5;
};
}
将返回带有z()
键的对象:
x
但实际上你有一个标签为`{x:5}`
的函数只运行x
的表达式。
为了完整起见,修复将是添加一个显式返回和另一组花括号
5
或者用括号包装整个事物
() => {return {x: 5}}
修改强>
作为以下评论的后续内容:
为了清楚起见,您的代码编译在我测试的几个环境以及堆栈片段中,如下所示:
() => ({x: 5})
&#13;
答案 1 :(得分:0)
代码无效ES6。
您似乎正在使用babel进行“编译”,并且无意中启用了flow语法扩展(以及第二行的class properties)。在流程中,daemonGetNodeStatus('http://kube.com/something', 'name', function(err, result){
if(err) {console.log(err); }
else {
console.log(result);
// do whatever you want with the async result
}
});
是class field type annotation。当然,x: 5
作为一种类型没有意义,但显然它们允许非常随意的表达。