当我尝试这样做时:
function a()
{
function b() { }
}
a();
a();
Run Code Online (Sandbox Code Playgroud)
我得到Cannot redeclare b....
当我试图这样做时:
function a()
{
if(!isset(b))
function b() { }
}
a();
a();
Run Code Online (Sandbox Code Playgroud)
我得到unexpected ), expected ....
如何将函数声明为本地函数并在a返回时将其遗忘?我需要将函数传递给它array_filter.
只是想问一个问题:在JavaScript中将函数命名为变量有什么理由吗?
(我的意思是使用Dep两次。只是在Vue.js中爬行并找到了这个)
var Dep = function Dep () {
this.id = uid++;
this.subs = [];
};
Run Code Online (Sandbox Code Playgroud) 我正在尝试用 JavaScript 编写一个辅助方法。如果发送函数或对函数的引用,它的行为应该有所不同。
我想像这样使用它:
helper('div', function () { return false; })
helper('div', obj.fn)
Run Code Online (Sandbox Code Playgroud)
我不明白的是:如何在辅助函数内部区分两者之间的区别?
我认为这是因为 JavaScript 在发送 obj.fn 之前首先评估它。我发现的唯一解决方法是将 obj.fn 作为 obj 发送,即
helper('div', { fn: obj.fn })
Run Code Online (Sandbox Code Playgroud)
然后我可以用 typeof 来区分两者之间的区别。但我真的很喜欢某种无需额外对象声明的方法。
有人可以解释以下功能定义之间的区别吗?
var alertMessage = function alertMessage(message) {
alert(message);
}
var alertMessage = function(message) {
alert(message);
}
Run Code Online (Sandbox Code Playgroud)
各自的含义是什么?谢谢!
PopupFirstNameButton.addEventListener('click', FirstNameFunction);
// This gets called
function FirstNameFunction(){
alert("Hello");
}
// This does not
var FirstNameFunction = function (){
alert("Hello");
}
Run Code Online (Sandbox Code Playgroud) 说我有以下代码:
var secrets;
Array = function() {
secrets = this;
};
Run Code Online (Sandbox Code Playgroud)
上面的示例的作者说,代码正在重新定义Array构造函数.首先,我不确定所指的this是什么.任何人都可以建议吗?
第二:以下代码是否相同?
var secrets;
function Array() {
secrets = this;
}
Run Code Online (Sandbox Code Playgroud)
顺便提一下,上面的代码来自以下关于Json漏洞的文章:请参阅此处
它们之间有什么区别吗?我一直在使用这两种方式,但不知道哪一种做什么,哪种更好?
function abc(){
// Code comes here.
}
abc = function (){
// Code comes here.
}
Run Code Online (Sandbox Code Playgroud)
定义这些功能有什么区别吗?像i ++和++ i这样的东西?
javascript function definition user-defined-functions hoisting
在window.onload事件上,我希望调用一个函数。如果我按照下面的定义进行定义,则不会调用该函数。
try {
window.addEventListener("load", initialiseTable, false);
} catch(e) {
window.onload = initialiseTable;
}
var initialiseTable = function () {
console.log("hello world!!");
};
Run Code Online (Sandbox Code Playgroud)
但是如果我将函数声明更改为
function initialiseTable() {
console.log("hello world!!");};
Run Code Online (Sandbox Code Playgroud)
它有效,有什么主意吗?
我刚刚了解了函数声明和函数表达式之间的区别.这让我想知道我是否在AngularJS代码中做得对.我正在遵循John Papa使用的模式,但现在它似乎与模块模式的典型JS方法不一致.John Papa在他的控制器和服务中大量使用嵌套的函数声明.这不好吗?
有没有理由支持这个:
var foo = (function() {
var bar = function() { /* do stuff */ };
return {
bar : bar
};
}());
foo.bar();
Run Code Online (Sandbox Code Playgroud)
对此:
var foo = (function() {
return {
bar : bar
};
function bar() { /* do stuff */ };
}());
foo.bar();
Run Code Online (Sandbox Code Playgroud)
我主要是一名C#开发人员,仍然习惯于JavaScript的所有细微差别.我更喜欢后一种方法,因为IIFE中的所有功能都是私有的,顶部的揭示模块模式实际上是公共部分.在C#类中,我总是在私有支持函数之前拥有我的公共属性和方法.但是,我意识到它在JS世界中可能不那么干脆.
使用后一种方法有哪些隐患(如果有的话)?
javascript module-pattern function-declaration function-expression iife
我希望创建一个函数,返回一个Observable<any>但在返回之前另一个异步任务必须完成(an Observable<string>),以便将值传递给返回的Observable.
@Injectable()
export class MyComponent
{
GetAuthToken = function() : Observable<string>
{
return this._storageService.GetAsString('authToken');
}
GetData = function(authToken) : Observable<any>
{
let headers = new Headers();
headers.append('authToken', authToken);
var getUsers = this._http.get('/api/endpoint', { headers: headers })
.map((resonse: Response) => resonse.json()));
return getUsers;
}
DoIt = function() : Observable<any>
{
this.GetAuthToken ().Subsribe(t=> {
return GetData(t);
})
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我希望在GetData函数中执行GetAuthToken函数,等待其完成,然后仍然返回http observable,而不是将authToken参数传递给GetData函数.
执行DoIt函数将返回订阅者,而不是GetData Observable
javascript ×9
function ×3
angular ×1
definition ×1
hoisting ×1
iife ×1
php ×1
rxjs ×1
rxjs5 ×1
vue.js ×1