为什么javascript坚持一个函数使用大括号,而不是其他任何东西?
例如,在javascript中,我可以为什么javascript坚持一个函数使用大括号,而不是其他任何东西?,javascript,syntax,Javascript,Syntax,例如,在javascript中,我可以 var a = 1; while (a < 10) a++; if (a === 10) a = 1; 但是不行 function foo(a) return bar(a); 函数有什么不同之处,它不能像if和while等那样工作?消除单行语句/表达式的大括号是许多语言中的常见模式 这只是(lazy:)程序员的语法糖 如果在If或while中有多个语句,则仍需围绕它们编写{} 我个人建议总是这样做,因为忘记{}有时会导致不明显的错误: 设i=
var a = 1;
while (a < 10) a++;
if (a === 10) a = 1;
但是不行
function foo(a) return bar(a);
函数
有什么不同之处,它不能像if
和while
等那样工作?消除单行语句/表达式的大括号是许多语言中的常见模式
这只是(lazy:)程序员的语法糖
如果在If
或while
中有多个语句,则仍需围绕它们编写{}
我个人建议总是这样做,因为忘记{}
有时会导致不明显的错误:
设i=0;
如果(i>0)
i++;
log(“这种情况仍然发生”)代码>都是关于语法的
在scheme中,函数可能如下所示:
(define (square x)
(* x x))
def square(x):
return x * x
在python中,函数可能如下所示:
(define (square x)
(* x x))
def square(x):
return x * x
所以,JavaScript函数声明语句是:
function name_this_is_function_header(...parameters) {
// and this is function body
// statements
}
它必须包含一个符号为{}的主体。(尽管ES6为arrow函数(()=>{})添加了一个语法,但如果其中只有一条语句,则可以省略{})
函数是一个标记,()是一对标记,{}也是一对标记,编译器或解释器将它们视为一个整体抽象,称为JavaScript函数
从java中借用了很多语法,java也做了C++的C++,C++做了同样的事情。这就是为什么
对于语句,例如if和while,其语法为:
if (condition) one-statement;
while (condition) one-statement;
所以,这都是关于语句的,语句可以是单个的,也可以是复合的
单个语句不需要{},复合语句只是由{}标记或符号包含的几个单个语句。如果在true之后需要几个语句,则必须将复合语句作为一个整体使用
这不是什么神秘的事情,只是如何编写它来表示。使用es6,可以为函数执行var a=()=>console.log('1')。不需要大括号函数具有函数级作用域,但不存在块级作用域。当然,它会随着let而改变,但不能这样做,实际上,如果您使用箭头函数,您可以这样做<代码>常数条=a=>a+1
和常数条=a=>bar(a)
啊。。。我仍然被困在ES3的世界里。这就解释了。至于“为什么”,语法规则就是这样。