[英]javascript - access and change the value of the var from outside the function
我可以從函數外部訪問和更改var
的值嗎?
var ArrowFlag = "1";
$('input, textarea, select').focusin( function() {
var ArrowFlag = "0";
//console.log(ArrowFlag) will = 0
});
$(document).bind('keyup', function() {
// When input:focus console.log(ArrowFlag) will = 1
});
input:focus
事件后,var ArrowFlag
的值應為0
。
但是,當您在input:focus
之后有keyUp
事件時,var的ArrowFlag值將為1
。 為什么? 看起來我的var ArrowFlag
從未更改過它的值。
這都是關於可變范圍的。 從var ArrowFlag = "0"
刪除“ var”,然后閱讀http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/或其他相關文章之一-您會很高興的。
您已經定義了兩個單獨的變量ArrowFlag
,如果您希望它們成為同一個變量,請從focusin回調中的一個變量中刪除var:
var ArrowFlag = "1";
$('input, textarea, select').focusin( function() {
ArrowFlag = "0";
//console.log(ArrowFlag) will = 0
});
$(document).bind('keyup', function() {
// after focusin ArrowFlag will now be 0
});
在javascript變量的作用域范圍內,您要在focusin
匿名函數內聲明另一個ArrowFlag
,該函數隱藏外部的ArrowFlag
。 您無需再次聲明ArrowFlag
(通過使用var
),請嘗試以下操作:
var ArrowFlag = "1";
$('input, textarea, select').focusin( function() {
ArrowFlag = "0";
});
var
在當前上下文中聲明一個變量,頂部上下文是DOM窗口。
將var
放在函數中,以避免在不同的上下文中重新聲明相同名稱的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.