2013-05-07 41 views
0

我有一個問題在Javascript中,坦率地說,它是我在做什麼很多困惑。在Javascript中有沒有任何方法可以將實際值賦予變量而不需要這樣做?我猜想這是一種指針問題,雖然我不熟悉指針。Javascript獲取或設置的值,而不是隻是重命名的東西

例如,當我這樣做:

myVar = $(".myClass").height(); 

我沒有設置myVar的等於返回值,我設置myVar的等於功能,使myVar的始終再次檢查時,它被調用。我希望myVar在賦值後等於文字數字。因此,當變量再次被調用時它不能改變。

例如,如果高度爲第12名,然後我做了我上面的代碼中,myVar的將現在等於12,高度甚至後改爲16,將myVar的變量將有12

值有沒有解決的辦法?有人能夠確定這是什麼叫做,所以我可以做更多的研究?當我需要一個函數返回的值作爲常量時,這變得很困難。我知道Mozilla具有const類型,但IE不支持這種類型。

任何幫助將是偉大的!

編輯:

只是爲了重申!每當我在高度變化後調用此變量時,myVar都會改變。這是錯誤的,但我不知道如何阻止它!

+2

_ 「我沒有設置myVar的等於返回......值」 _嗯,是的,你是... – elclanrs 2013-05-07 21:49:06

+1

'.height()'返回是一個整數。 – 2013-05-07 21:49:10

+0

JavaScript使用文字(支持數字),所以它實際上是保存的實際值,而不是指針。 – 2013-05-07 21:49:21

回答

2
var myVar = myVar===undefined ? $(".myClass").height() : myVar; 
//first time, assign. second time, ignore and retain initial value. 

edit:added「var」because:OCD。

1

在JavaScript中實際上有2種對象。指針(表示它們存儲數據的地址)和變量(它們存儲實際數據)。棘手的部分是賦值運算符。 當您將一個函數分配給一個變量時,結果變量將是一個指針。例如:

var myPointer = MyObject(); 

但是

var myVariable = 3; 

將分配變量的實際值。在你的例子中,你正在分配一個值。

1

這裏是一些工作樣品,如果你想玩它。

http://jsfiddle.net/Madthew/Xfass/3/

var myVar2 = myVar2===undefined ? $(".myClass").height() : myVar2; 
$(document).ready(function() { 
    myVar = $('.myClass').height(); 

}); 

$("#btn").click(function() { 
    resize(); 
}); 
相關問題