function a() { return 1; }
function b() { return(1); }
Run Code Online (Sandbox Code Playgroud)
我在Chrome的控制台中测试了上面的代码,两者都返回了1
.
function c() { return "1"; }
function d() { return("1"); }
Run Code Online (Sandbox Code Playgroud)
我还测试了上面的代码,并返回了两个函数"1"
.
那么使用return
和有return()
什么区别?
Rem*_*ich 177
两者之间相同
var i = 1 + 1;
Run Code Online (Sandbox Code Playgroud)
和
var i = (1 + 1);
Run Code Online (Sandbox Code Playgroud)
那就是没有.允许使用括号,因为它们可以在任何表达式中影响评估顺序,但在您的示例中,它们只是多余的.
return
不是一个功能,而是一个声明.它在语法上类似于其他简单的控制流语句,break
并且continue
也不使用括号.
alp*_*tis 21
没有区别.
return
不是函数调用,而是语言语句.您使用括号所做的只是将返回值分组,以便对其进行评估.例如,你可以写:
return (x == 0);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您返回语句的值,该值x == 0
将返回布尔值true
或false
取决于值x
.
Zah*_*med 18
实际上这里的优先级()
更高,所以它首先评估:
首先("1")
通过以下方式评估:
("1") ==> "1"
("1","2") ==> "2"
("1","2","3") ==> "3"
("1"+"2","2"+"2","3"+"2") ==> "32"
(2+3+6) ==> 11
Run Code Online (Sandbox Code Playgroud)
所以上述陈述相当于:
return "1";
Run Code Online (Sandbox Code Playgroud)
看得见:
因此,功能基本上没有区别,但第二个可能是一个可忽略的缓慢,因为它首先解决括号.
没有区别,括号是可选的.请参阅MSDN:
Run Code Online (Sandbox Code Playgroud)return[(][expression][)];
可选的表达式参数是要从函数返回的值.如果省略,则该函数不返回值.
您使用return语句来停止函数的执行并返回表达式的值.如果省略了expression,或者没有从函数内执行return语句,则为调用当前函数的表达式赋值undefined.
return
是一个语句, 一个启动return 语句的关键字,而不是一个函数.
如前所述,额外的括号会影响评估顺序,但不会用于"执行"命名的函数return
.这就是为什么这些线路没有任何问题:
return (1);
var a = (1);
Run Code Online (Sandbox Code Playgroud)
实际上,它们与这些线条完全相同:
return 1;
var a = 1;
Run Code Online (Sandbox Code Playgroud)
之所以return()
抛出一个语法错误是的确切原因以下行引发错误(包括在比较中return语句):
return(); // SyntaxError: syntax error
var a = (); // SyntaxError: syntax error
Run Code Online (Sandbox Code Playgroud)
人类存在巨大差异,Javascript引擎零差异.
return 1
是一个声明我们需要立即退出函数屈服值1的声明.
return(1)
是一个伪装成愚蠢惯例的函数调用的语句,你没有义务在Javascript中插入括号外的空格.如果你在生产系统中使用这样的代码,那么任何维护人员都会花费一些时间来决定你是否确实return()
在代码库中的某个地方有功能,或者只是不知道return
关键字是什么.
正如许多其他人已经正确说过的那样,括号除了"group"之外什么都不做,优先级高于Number
1 的文字.
归档时间: |
|
查看次数: |
9824 次 |
最近记录: |