这两个功能之间有什么区别?(JavaScript)
What are the differences between these two functions one uses first class? (javascript)
有两个函数,一个使用第一个类,将函数分配给变量然后返回变量,另一个只是一个常规的简单函数。 在那里,我不明白为什么一个比另一个更好,因为它们看起来和对我做完全相同的事情。 有人可以帮我一把,让我更容易理解其中的区别吗?
头等舱
function createDrinkOrder1(passenger) {
var orderFunction;
if (passenger.ticket === "firstclass") {
orderFunction = function() {
console.log("Would you like a cocktail or wine?");
};
} else {
orderFunction = function() {
console.log("Your choice is cola or water.");
};
}
return orderFunction;
}
简单功能
function createDrinkOrder2(passenger){
if(passenger.ticket === "firstclass"){
console.log("Would you like a cocktail or wine?");
}else{
console.log("Your choice is cola or water.");
}
}
createDrinkOrder1 返回一个函数,您可以稍后调用该函数:
var orderFunction = createDrinkOrder1(passenger);
// nothing printed to console yet
// later:
orderFunction();
// now printed to console
createDrinkOrder2 会立即打印结果:
createDrinkOrder1(passenger);
// printed to console
有时你返回一个函数,不仅是为了以后能够调用它,也是为了创建一个闭包,这可能是一个有趣的话题。
头等舱
function createDrinkOrder(passenger) {
var orderFunction;
if (passenger.ticket === "firstclass") {
orderFunction = function() {
console.log("Would you like a cocktail or wine?");
};
} else {
orderFunction = function() {
console.log("Your choice is cola or water.");
};
}
return orderFunction;
}
返回可在调用解析后使用的函数。
var a = createDrinkOrder(some_passenger);
// a now has a function that I can call whenever I want
// If I want to print the result every second I can use
setInterval(a, 1000);
// Or just call it immediately
a();
简单功能
function createDrinkOrder2(passenger){
if(passenger.ticket === "firstclass"){
console.log("Would you like a cocktail or wine?");
}else{
console.log("Your choice is cola or water.");
}
}
不返回任何内容,只是在您致电createDrinkOrder2(some_passenger)
时立即打印。 这意味着如果要再次打印到控制台,则必须调用createDrinkOrder2(some_passenger)
。
第一个实现会将声明的函数提供给调用函数,因此他们可以通过调用变量"orderFunction"再次使用它。第二个只会打印一次值,不能重复使用,所以取决于你的用例是什么。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 在ember/handlers中使用value和valueBinding有什么区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 什么's本地node.js服务器和python简单http服务器之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- angularjs中的ng网格和ui网格有什么区别
- webpack开发模式和生产构建模式之间有什么区别
- 缓存!saveLocations()和addLocation()函数有什么区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 以下两者在javascript中有什么区别
- 什么's extjs中的mon()和on()之间的区别
- jquery.js和jquery.lite.js有什么区别
- 通过Nuget安装Angular JS和Angular JS核心有什么区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- jQuery中这两个词有什么区别
- 在Javascript语法中:和::和:::有什么区别
- 什么'这是JS中以下定义方式的区别
- getElementById 和 getElementsByClassName 有什么区别?
- (typeof variable === “function”) 和 jQuery.isFunction() 有什么区别