获取全局 JS 变量以在函数中“工作”
Getting a global JS variable to 'work' inside a function
我无法让我认为是全局 JS 变量的东西在函数中工作。这是我代码的部分摘录:
<script>
prop_no = 2;
if (prop_no) {
alert ('global prop_no initialised ' + prop_no);
} else {
alert ('no prop_no');
}
function getHtml() {
// alert('getHtml called');
var len = $('ul.extraProperty').length; // length of <ul> containing the added properties
if (prop_no) {
alert ('prop_no valid locally '+ prop_no);
} else {
alert ('no local prop_no');
}
... more code...
}
... more ...
getHtml();
</script>
我想比较"len"和"prop_no"的值,并根据结果调整"prop_no"的值,然后再做其他事情。
我一直明白,如果全局声明 var(在函数外部(,那么它将在内部可用,但这似乎不是我得到的。调用该函数时,我期望警报"在本地 2 prop_no有效",但实际上我得到"没有本地prop_no"。我不明白为什么。
如果我将函数更改为:
function getHtml(prop_no)...
并呼吁:
getHtml(prop_no);
然后我得到了我所追求的。但是,我不完全确定在这种情况下会选择什么值(该函数是从"添加另一个属性"复选框调用的(。
请参阅:https://jsfiddle.net/ramasaig/yrpoo6v7/18/我知道"删除属性"按钮尚不起作用;这就是我正在做的事情,因为删除属性会影响属性编号。
可能还有一些其他变量我想全局声明并在函数内部使用。我还需要对函数中的这些变量所做的任何更改,以便在下次调用函数时应用。我看过范围界定规则,在我看来,我正在做的事情应该有效,但事实并非如此。
有人可以告诉我我在这里做错了什么(或者为什么无论我做什么都不起作用,如果是这样的话(,请。
在小提琴的第 38 行,您正在设置一个局部var prop_no
,该隐藏了对外部prop_no
变量的引用。
31. if (prop_no) {
32. alert ('local prop_no initialised' + prop_no);
33. } else {
34. alert ('no local prop_no');
35. }
36.
37. // alert('length is ' + len);
>38. var prop_no = len + 2; // makes first sub-form 'Property 2' // <-- RIGHT HERE
问题中的代码和 jsfiddle 之间的区别是这样的:
prop_no = 2;
和
prop_no = 2
var prop_no = len + 2
即prop_no
是在getHtml((方法中声明的,即使它是在你使用它之后被"声明"的。
在javascript中,你放置"var"的顺序并不重要 - 如果方法中有一个var,则变量的作用域将在该方法内。
这就是为什么它适用于直接复制您的代码@Andy而不是您 - 这个问题不包括所有细节。
- 咖啡的Javascript订单总数无法使函数正常工作.请协助
- removeClass函数没有'工作不正常
- 你能解释一下这个阶乘函数是如何工作的吗?
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- jQuery加载的async和ready函数不工作
- 更改智能表中的页面将停止JQuery函数的工作
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- jQuery函数不能只在一个页面上工作
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 从js引擎的角度来看闭包和构造函数是如何工作的
- appendChild在函数外部工作,但在函数内部不工作
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 由于某种原因,我的JavaScript函数无法工作
- 为什么递归生成器函数没有't在ES2015工作
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 从控制台中的工作函数转换为工作脚本.(请参阅编辑)
- Angular JS-工作函数中的“错误:[$interpole:interr]Can't interpole:
- 简化工作函数以替换特定单词
- 为什么不在回调中工作函数?
- InnerHTML不工作:函数未定义