设置JavaScript变量以稍后检查定义
Set JavaScript variable to check definition later
如何将var设置为稍后要检查其是否已定义的值?
示例:要检查是否没有定义jQuery,您可以这样做:
if (typeof(jQuery) === 'undefined') {
}
但如果我想做这样的事情(这显然不起作用)怎么办:
var toCheckLater = jQuery; // This fails.
// Some time later..
if (typeof(toCheckLater) === 'undefined') {
}
我想做的是从数组中动态加载脚本,但我想提前设置稍后将检查其定义的变量。我想避免使用大量的if或switch语句。这意味着我希望找到一个比更优雅的解决方案
switch (scriptName) {
case 'jQuery':
if (typeof(jQuery) === 'undefined') {
}
break;
case 'someOtherScriptName':
.
.
.
}
有什么想法吗?提前谢谢。
函数可以执行以下操作:
var toCheckLater = function() { return typeof jQuery == "undefined"; }
// later:
toCheckLater()
您也可以使用结构来实现以下功能:
function getChecker(name) {
return function() {
return typeof window[name] == "undefined";
// alternative:
return name in window; // can be undefined, but the variable exists
};
}
var toCheckLater = getChecker("jQuery");
使用
if (typeof jQuery === "undefined")
以检查是否未定义。
我不太明白你想要实现的目标,但我认为你可以做这样的
var toCheckLater = typeof jQuery; //if, for example, jQuery is defined you'll get "function"
// Some time later..
if (toCheckLater === 'undefined') {
}
只需执行以下操作:
var scriptName = 'jQuery';
if( !window.hasOwnProperty(scriptName) ){
//jQuery is undefined
}
var checker = function(scriptArray) {
for(var i in scriptArray)
this[i] = i?i:loadScript(i); // make your own loadScript function
}
checker({'jquery','anothercode'});
//access checker.jquery / checker.anothercode
你可以用这样的东西。创建一个加载所有脚本的"类"。
您已经使用了typeof
方法
typeof(variable_name)
会根据变量给出"字符串"、"对象"、"未定义"或"数字"
typeof(jQuery)=="未定义"
是要走的路。
您的脚本数组:
var scripts = ['script1', 'jQuery'];
加载脚本后,您可以使用相同的数组并循环使用它
for (var i = 0, n = scripts.length; i !== n; i++) {
if (!window.scripts[i]) {
// falsy
}
}
这假设脚本数组引用一个全局变量,脚本将在加载时公开该全局变量。
但是,如果我理解您的意图,那么更好的方法是在加载适当的script
元素时注册回调。请参阅以下问题以获取一些示例:(1),(2)
像这样的代码非常标准:
function loadScriptAsync(src, callback) {
var script = document.createElement('script'),
place = document.getElementsByTagName('script')[0];
script.type = "text/javascript";
script.async = true;
script.src = src;
script.onload = script.onreadystatechange = function() {
callback();
// clean up for IE and Opera
script.onload = null;
script.onreadystatechange = null;
};
place.parentNode.insertBefore(script, place);
}
相关文章:
- 如何检查管道中未定义的项目
- 用于检查数组中是否存在元素的javascript自定义方法
- 在验证器中添加自定义规则以检查<ul>具有元素
- 如何在JavaScript中检查变量是否为null和/或未定义
- 使用javascript&自定义验证器检查开始日期和结束日期
- 检查对象的所有属性是否未定义
- JSON偶尔未定义-我该如何检查
- AngularJs 检查是否未定义和空的最佳实践
- 如何检查服务器是否返回未定义然后忽略它
- jQuery检查自定义Google电子表格页面上输入和下拉列表的更改
- 离子警报 - 检查结果是否未定义
- 什么更快?运行空函数或检查函数是否未定义
- 理解Javascript中的“未定义”:它是如何工作的,如何安全地检查它以及是否可以重新分配
- Jquery Ajax 和 Json:如何检查是否未定义
- 设置JavaScript变量以稍后检查定义
- 检查是否定义了数组中的值
- 正在检查未定义的值
- 自定义CSS复选框jQuery诱导的“;“已检查”;属性不't在视觉上”;“检查”;复选框
- 检查链接对象形式中未定义属性的最佳实践是什么
- 为什么要检查定义的变量var m = m || function(){}