这是JavaScript上带有return关键字的预期行为吗
Is this an expected behavior with return keyword on JavaScript
我今天差点因为一个愚蠢的错误而大发雷霆。问题是,我不确定这是否是一种预期的行为。
根据我对C#的习惯,我编写了以下javascript代码,并试图了解出了什么问题,因为它没有返回任何内容,甚至没有在控制台中写入任何错误:
this.fullName = ko.computed(function () {
return
this.firstName() + " " + this.lastName();
}, this);
然后(半小时后),我更改了下面的代码a,它起作用了:
this.fullName = ko.computed(function () {
return this.firstName() + " " + this.lastName();
}, this);
这是预期的行为吗?
是。它是隐含的分号。
以下是类似的情况和解释:http://premii.com/lab/js_implicit_semicolon_and_return.php
简而言之:您的第一个代码段被解释为:
this.fullName = ko.computed(function () {
return;
this.firstName() + " " + this.lastName();
}, this);
Yes ECMA Spec,它是Javascript规范,定义了类似以下的行为
某些ECMAScript语句(空语句、…返回语句和抛出语句)必须终止使用分号。此类分号可能总是显式出现在源文本但是,为了方便,可以省略此类分号在某些情况下从源文本。这些情况是描述为分号自动插入在这些情况下的源代码令牌流。
更多
当遇到continue、break、return或throw令牌并且在下一个标记之前遇到LineTerminator,分号为在continue、break、return或throw之后自动插入代币
return或throw语句中的表达式应在行作为返回或抛出标记
他们给出了一个的例子:
源
return
a + b
通过自动插入分号转换为以下内容:
return;
a + b;
因此,您的第一个代码将被解释为:
return;
this.firstName() + " " + this.lastName();
在返回的末尾自动添加分号。
因此,规范给出了在一般情况下面对这些情况的实用建议javascript:
后缀++或--运算符应与其出现在同一行操作数。
return或throw语句中的表达式应在相同的行作为返回或抛出标记。
break或continue语句中的标识符应在同一个行作为中断或继续标记。
Javascript有一个特点,那就是自动插入分号,这是不好的,你不应该依赖它并在语句完成时添加分号。
在这种情况下,javascript将;
添加到return
语句中。因此它与相同
return;
this.firstName() + " " + this.lastName();
- 使用“;这个“;JavaScript原型方法中的关键字
- JavaScript 中的嵌套函数和 “this” 关键字
- 重写需要javascript中带有import关键字的语法
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 可以在Javascript中添加新的关键字吗
- javascript中的这个关键字
- Javascript关键字搜索子类Div值
- 在对象中用Javascript编写此关键字
- 使用Javascript根据URL中的关键字隐藏下拉选项
- Javascript 中的 const 关键字 scope
- '描述'javascript中的关键字
- 在javascript中绑定到此关键字
- 所以我正在使用Javascript const关键字,在IE中会发生什么
- 删除重复的关键字 JavaScript
- YouTube API v3 按关键字 JavaScript 搜索
- 基于关键字javascript组合2个数组
- 匹配文本中的多个关键字(Javascript)
- 从字符串中提取关键字:Javascript
- 向关键字javascript添加数组值