编程语言
首页 > 编程语言> > javascript – 使用逗号运算符链接多个函数定义

javascript – 使用逗号运算符链接多个函数定义

作者:互联网

我正在看看Uglify-js的源代码,我注意到了一些有趣的东西.在bin / uglifyjs(ref)中,有两个函数定义如下:

//syntax A
var defsym = function(sym) {
  ...
},
defval = function(v) {
  ...
};

考虑到Uglify-js是由专业人士编写的,并且在许多产品(如JQuery)中使用,我不明白为什么代码不是这样编写的:

//syntax B
var defsym = function(sym) {
  ...
};
var defval = function(v) {
  ...
};

这将更清楚地表明这是两个局部变量.或者这个怎​​么样:

//syntax C
function defsym(sym) {
  ...
}
function defval(v) {
  ...
}

这个使得defsym和defval函数可以在母函数的整个范围内使用.

他们为什么会选择第一种语法?为什么不用其他语法?

解决方法:

他们为什么不使用语法B?因为它需要更多的字符.

他们为什么不使用Syntax C?因为它的含义并不完全相同.函数声明与函数表达式不完全相同.

现在我看到分配是在try / catch中进行的,这意味着它们处于一个块中.

在块中声明函数是无效的(即使某些实现允许它).

 // Invalid
try {
    function defsym(sym) {
        // ...
    }
    // ...
} catch(e) {
    // ...
}
 // Valid
try {
    var defsym = function(sym) {
        // ... 
    },
    // ...
} catch(e) {
    // ...
}

这就解释了为什么他们没有选择语法C.

此外,“严格模式”将通过抛出错误绝对禁止此类无效声明.

标签:javascript,uglifyjs
来源: https://codeday.me/bug/20190718/1494316.html