我最近开始保持别人的JavaScript代码,我正在修复错误,添加功能,也试图更新代码并使其更加一致。
以前的开发人员使用了两种方式来宣布功能,我无法解决是否有原因。
兩種方式是:
var functionOne = function() {
// Some code
};
function functionTwo() {
// Some code
}
使用这两种不同的方法的原因是什么?每个方法的优点和缺点是什么?可以用一种方法做些什么,不能用另一种方法做些什么?
二是定义函数的不同方式,区别在于浏览器如何解释并将其加载到执行背景中。
第一個案例是函數表達,只有當翻譯者達到這個代碼線時才會充電,因此,如果你這樣做,你會發現函數一不是函數的錯誤。
functionOne();
var functionOne = function() {
// Some code
};
原因在于,在第一行中,没有值被分配到函数One,因此它是不定义的,我们试图称之为函数,因此我们得到一个错误。
在第二行中,我们将匿名函数的参考归分为函数One。
第二个案例是功能声明,在任何代码执行之前加载,所以如果你喜欢下一个,你不会得到任何错误,因为声明加载,在代码执行之前。
functionOne();
function functionOne() {
// Some code
}
对格雷格的答案有更好的解释
functionTwo();
function functionTwo() {
}
為什麼沒有錯誤?我們總是被教導,表達從上到底(??)
因为:
函数声明和变量声明总是由JavaScript翻译器无视地移动到其内容范围的顶部。
这就是这样的代码:
functionOne(); --------------- var functionOne;
| is actually | functionOne();
var functionOne = function(){ | interpreted |-->
}; | like | functionOne = function(){
--------------- };
请注意,提交声明的部分未被提交;只有名称被提交。
但是,在函数声明的情况下,整个函数身体也将被包围:
functionTwo(); --------------- function functionTwo() {
| is actually | };
function functionTwo() { | interpreted |-->
} | like | functionTwo();
---------------
1、功能表达
var functionOne = function() {
// Some code
};
函数表达式定义一个函数作为一个更大的表达式合成的一部分(通常是一个变量任务)。函数表达式通过函数表达式定义的函数可以被命名或匿名。
二、职能宣言
function functionTwo() {
// Some code
}
这是在JavaScript中召唤函数的正常方式,这个函数可以被召唤之前你甚至宣布它,因为在JavaScript中,所有函数都被收集,但如果你有“严格使用”这个函数不会像预期那样收集,这是一个很好的方式召唤所有正常函数,这些函数不大,也不是一个构建函数。
此外,如果您需要更多关于如何在JavaScript中工作的信息,请参阅下面的链接:
一个描述什么时候优先于第一种方法,而不是第二种方法,是当你需要避免超越一个函数的以前定义时。
与
if (condition){
function myfunction(){
// Some code
}
}
,这个定义的微功能将超越任何以前的定义,因为它将在时间段进行。
虽然
if (condition){
var myfunction = function (){
// Some code
}
}
正确的定义功能工作只有在条件满足时。
在JavaScript中,有两种方式可以创建功能:
函数声明:函数 fn(){ console.log(“Hello”); } fn(); 这是非常基本的,自我解释,用在许多语言和标准在C家庭的语言. 我们声明了一个函数定义它,并通过呼叫它执行它. 你应该知道的是,函数实际上是对象在JavaScript; 内部我们创造了一个对象上面的函数,并给它一个名字 cal
参考: JavaScript 函数声明合成: var fn = function() {} vs function fn() {}