需要一些帮助来理解这个JavaScript吗
我在一个js文件中有以下奇怪的代码,我需要一些帮助来理解发生了什么。我感到困惑的是,为什么整个事情都陷入了妄想状态?。这是什么意思需要一些帮助来理解这个JavaScript吗,javascript,jquery,Javascript,Jquery,我在一个js文件中有以下奇怪的代码,我需要一些帮助来理解发生了什么。我感到困惑的是,为什么整个事情都陷入了妄想状态?。这是什么意思 (function() { var someobj = window.someobj = []; var parentId = '#wrapper'; $(document).ready(function() { //some code here }); $(document).ready(function() { //
(function() {
var someobj = window.someobj = [];
var parentId = '#wrapper';
$(document).ready(function() {
//some code here
});
$(document).ready(function() {
//some code here
}
});
我将假设这实际上是匿名函数定义的一部分,这就是为什么它在括号中。如果有某种逻辑会使window.someobj根据不同的条件进行更改,我可以看到这样做,但是让代码进一步做同样的事情。我将假设这实际上是匿名函数定义的一部分,这就是为什么它在括号中。如果有某种逻辑将使window.someobj根据不同的条件进行更改,我可以看到这样做,但是让代码进一步执行相同的操作。就代码而言,括号实际上是不必要的。但这段代码似乎并不完整。该函数通过将变量设置为页面上的某个对象,然后设置另一个常量来初始化。然后有两个看起来完全相同的触发器,它们将在页面加载时触发一些代码
似乎不是一段非常有用的代码。是否有更大的部分可以解释这一点?就这段代码而言,括号实际上是不必要的。但这段代码似乎并不完整。该函数通过将变量设置为页面上的某个对象,然后设置另一个常量来初始化。然后有两个看起来完全相同的触发器,它们将在页面加载时触发一些代码
似乎不是一段非常有用的代码。在JS中,您可以声明一个函数,然后自动调用它:
(函数测试(){alert('Test');}()代码>在JS中,您可以声明一个函数,然后自动调用它:
(函数测试(){alert('Test');}()代码>这里的外圆括号是多余的(尽管您的代码中有一个输入错误,我认为您缺少结束语)代码>)。有时,为了清晰起见,人们会在立即调用函数时将函数括在括号中,例如
(function($) {
//some jQuery code
})(jQuery);
在上面的函数中,参数$将具有外部jQuery变量的值。这是在jQuery和jQuery插件中完成的,以防止$symbol与其他框架发生冲突。这里的外括号是多余的(尽管代码中有一个输入错误,我认为您缺少结尾)代码>)。有时,为了清晰起见,人们会在立即调用函数时将函数括在括号中,例如
(function($) {
//some jQuery code
})(jQuery);
在上面的函数中,参数$将具有外部jQuery变量的值。这是在jQuery和jQuery插件中完成的,以防止$symbol与其他框架冲突。括号定义了一个临时范围。在JavaScript中这样做有时很有用。John Resig的《高级JavaScript学习指南》中有许多示例和进一步解释:
括号定义了一个临时范围。在JavaScript中这样做有时很有用。John Resig的《高级JavaScript学习指南》中有许多示例和进一步解释:
如果您提供的代码是完整的(两个$(document).ready(function(){});
语句中的内容除外),则此代码将不执行任何操作,并且该函数永远不会执行。带或不带包装括号都是一样的
通过将函数包装在括号中,可以创建一个函数。但是,函数必须立即执行,或者存储在变量中(这将否定匿名部分)。您经常会看到这种技术,以避免使用临时变量或仅用于较大应用程序初始化的变量污染全局范围。比如说
(function() {
// Do initialization shtuff
var someLocalVariable = 'value';
})();
// Notice the `();` here after the closing parenthesis.
// This executes the anonymous function.
// This will cause an error since `someLocalVariable` is not
// available in this scope
console.log(someLocalVariable);
那么,您的代码缺少的是()代码>位于函数末尾的右括号后。下面是您的代码(大概)应该是什么样子:
(function() {
var someobj = window.someobj = [];
var parentId = '#wrapper';
$(document).ready(function() {
//some code here
});
$(document).ready(function() {
//some code here
});
})();
如果您提供的代码是完整的(两个$(document).ready(function(){});
语句中的内容除外),则此代码将不执行任何操作,并且该函数永远不会执行。带或不带包装括号都是一样的
通过将函数包装在括号中,可以创建一个函数。但是,函数必须立即执行,或者存储在变量中(这将否定匿名部分)。您经常会看到这种技术,以避免使用临时变量或仅用于较大应用程序初始化的变量污染全局范围。比如说
(function() {
// Do initialization shtuff
var someLocalVariable = 'value';
})();
// Notice the `();` here after the closing parenthesis.
// This executes the anonymous function.
// This will cause an error since `someLocalVariable` is not
// available in this scope
console.log(someLocalVariable);
那么,您的代码缺少的是()代码>位于函数末尾的右括号后。下面是您的代码(大概)应该是什么样子:
(function() {
var someobj = window.someobj = [];
var parentId = '#wrapper';
$(document).ready(function() {
//some code here
});
$(document).ready(function() {
//some code here
});
})();
看起来这段代码并不完整。正如所写的,这段代码将什么也不做。您是否缺少一个结束语和一组额外的括号
在JavaScript中,没有模块系统,因此无法使用自己的顶级定义创建一个与可能使用的其他模块不冲突的模块
为了克服这个问题,人们使用匿名函数定义来避免名称冲突。您要做的是创建一个匿名函数,并立即执行它
(function () { /* do stuff */ })();
这将创建一个函数,然后立即执行它,不带任何参数。在该函数中使用var
定义的变量不会与在其他任何地方定义的变量冲突,因此您可以获得与您自己的私有名称空间等效的名称空间,就像模块系统将提供的名称空间一样。此代码看起来并不完整。正如所写的,这段代码将什么也不做。您是否缺少一个结束语和一组额外的括号
在JavaScript中,有