我正在尝试用 JavaScript 编写一个函数,其中将无限调用greet()。预期的结果是在每次通话中都添加问候语。
console.log(greet('hello').greet('world').greet())
Run Code Online (Sandbox Code Playgroud)
上面的输出应该给出 Hello world
并且可能有无限greet('string')
我最初的实现是这样的:
let greet = function (a) {
return function (a) {
return function (c){
return c ? (b + " " + c ) : (a + " " + b);
}
}
};
Run Code Online (Sandbox Code Playgroud)
然而,输出并不如预期。我在实施中遇到一些问题,希望得到一些帮助来解决这些问题。有人可以帮我解决这个问题吗?先感谢您。”
我知道这alert()是JavaScript中的内置函数.
但它是一个函数声明:
function alert() { ... }
Run Code Online (Sandbox Code Playgroud)
或函数表达式?
var alert = function() { ... }
Run Code Online (Sandbox Code Playgroud)
那么,当我们调用它时,我们是使用函数的名称还是变量的名称?同样prompt()和confirm()..
提前谢谢.
您如何看待哪一个是更好,更快,更好的声明函数的解决方案?
第一:
(var) myFunction = function(){
//Stuff to do
};
Run Code Online (Sandbox Code Playgroud)
或者第二:
function myFunction() {
//Stuff to do
};
Run Code Online (Sandbox Code Playgroud)
两者都可以在JavaScript和JQuery中使用.但你觉得哪个更好?
这会产生相同的结果吗?如果函数foo不存在怎么办?
var foo = foo || function(){
console.log("I'm Batman");
}
Run Code Online (Sandbox Code Playgroud)
VS
var foo = function() {
console.log("I'm Batman")
}
Run Code Online (Sandbox Code Playgroud) 据我所知,JS是函数作用域而不是块作用域,这意味着在(括号)内声明的对象不会创建不同的执行上下文.然而:
$('#firstBtn').click(function first() {
console.log("first activated");
});
$('#secondBtn').click(function() {
console.log("second activated");
first();
});
Run Code Online (Sandbox Code Playgroud)
退货Reference Error function is undefined.该函数first在括号内声明,因此从技术上讲,它应该可用于从声明的范围调用它的其他函数.
但这有效:
var callDat = $('#firstBtn').click(function first() {
console.log("first activated");
});
$('#secondBtn').click(function() {
console.log("second activated");
callDat.first();
});
Run Code Online (Sandbox Code Playgroud)
我的假设是,由于对象是函数,声明对象内部的函数可以计算为在不同的函数范围内声明,即使没有花括号.但我希望对此有一个明确的答案.