gpt4 book ai didi

javascript - 第三(和更大)嵌套范围的 JS 范围约定

转载 作者:行者123 更新时间:2023-11-29 16:15:47 25 4
gpt4 key购买 nike

如果您需要在嵌套函数中保留作用域,通常创建一个像这样的变量:var that = this;和引用 that在嵌套函数中。 3 度及以上学位的约定名称是什么?

我也遇到过一些使用代理的情况,但从来没有在 JQuery 中传递嵌套代理。嵌套proxy有什么特别之处吗?

Backbone 中出现了常规范围问题,有可能(我们仍在努力解决)必须向下一个级别:

keyPressed: function(keyEvent) {
if(case1 && case2 && case3) {
if(anotherCase) {
.....
}
else if(yetAnotherCase) {
....
var that = this;
window.waitIntervalID = window.setInterval(function() {
if(that.waitCount == 2) {
that.isWaiting = false;
that.waitCount = 0;

that.mainCounter = 0;
that.isRecording = true;
for(var i = 0; i < that.signature; i++) {
that.beatArray[i] = 0;
}
window.tapIntervalID = window.setInterval(function() {
that.count = that.mainCounter + 1;
that.mainCounterTime = new Date().getTime();
that.mainCounter = (that.mainCounter + 1) % that.signature;
}, that.average);
that.isTapping = false;
that.countIn = 1;
var bpm = 1000 / that.average * 60;
that.set('tempo', bpm);
window.clearInterval(waitIntervalID);
}
that.waitCount++;
}, this.average);
this.countIn++;
}
}
},

代理范围:

    // add click handler to this beat
$('#beat'+this.model.cid).click($.proxy(this.toggle, this));
return this;

最佳答案

我建议为您正在处理的项目使用特定的变量名称,而不是像 that 这样的通用名称或 selfme .那么使用什么名称应该是显而易见的。

例如,如果 this是 DOM 元素,您可以使用:

var element = this;

如果thisCat对象(想到这个是因为我在这个页面的广告中看到一只猫),你可以使用:

var cat = this;

等等

当然,如果您要处理更具体的元素、猫或其他任何东西,您可以使用比这更具体的名称。如果我有一个处理单个通用 DOM 元素的函数,我可能会调用变量 element ,但是,如果它处理 <ul>和一个 <li>我可能会使用 ulli对于各自的变量名。或者代码中有意义的任何名称。

此外,避免使用 this完全在你可以的时候。 this的用处很大在典型的 jQuery 代码中来自像 $.each() 这样的函数和 $().each() ,例如

$('.foobar').each( function() {
var element = this;
$(element).on( 'click', function() {
alert( 'Clicked = ' + element.id );
});
});

.each() 中使用命名参数要好得多相反:

$('.foobar').each( function( i, element ) {
$(element).on( 'click', function() {
alert( 'Clicked = ' + element.id );
});
});

关于您关于使用 nestedCat 的问题在嵌套函数中,我绝对不会使用引用代码结构 的变量名。相反,名称应该指代您正在谈论的事物。

什么是嵌套猫?我想这一定是一只小猫,所以现在我们可以谈谈了:

function Cat( args ) {
this.sex = args.sex;
this.name = args.name;
this.kittens = args.kittens;
}

var mommyCat = new Cat({
sex:'F',
name: 'Mommy Cat',
kittens: [
new Cat({ sex: 'M', name: 'Tom Kitty' }),
new Cat({ sex: 'F', name: 'Cute Kitty' })
]
});
console.log( mommyCat );
mommyCat.kittens.forEach( function( kitten ) {
console.log( kitten );
});

记录:

Cat {sex: "F", name: "Mommy Cat", kittens: Array[2]}
Cat {sex: "M", name: "Tom Kitty", kittens: undefined}
Cat {sex: "F", name: "Cute Kitty", kittens: undefined}

关于javascript - 第三(和更大)嵌套范围的 JS 范围约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com