2014-02-28 62 views
0

我有一個廣場(galleria.io)當代碼看起來像這樣的作品:JavaScript字符串插值

Galleria.run('.galleria', { 
    flickr: 'set:72157640607666844', } 

但是,當我嘗試設置集數爲變量,它與一個「致命的破壞錯誤:1失敗:未找到Photoset「

var fakeVar = 72157640607666844 
    Galleria.run('.galleria', { 
    flickr: 'set:' + fakeVar, } 

有關如何獲得此功能的任何想法?

供參考:我看了console.log('set:' + fakeVar),它肯定是返回設置:72157640607666844。最初,我認爲這是因爲它沒有引用返回集合,但我知道事實並非如此,因爲如果我做了" 'set:"+ fakeVar + " ' ",我得到了'set'的無方法錯誤。

此外,如果它是有幫助的,這是定義了一組方法的Galleria程序代碼:

set: function(photoset_id, callback) { 
    return this._find({ 
     photoset_id: photoset_id, 
     method: 'flickr.photosets.getPhotos' 
    }, callback); 
}, 
+1

'警報(fakeVar)' - 驚喜!使用_string_值。 – CBroe

+1

這是一個看起來像一個數字的例子,但實際上並不是你應該在代碼中使用數字的東西。如果你不用數字做數學,你應該使用一個字符串來表示它。 – Coenwulf

回答

1

72157640607666844Number太顯著爲JavaScript完全存儲:

console.log(72157640607666844); 
//   72157640607666850 

爲了避免精度的問題,你可以用文字在引號所以這是一個String代替:

var fakeVar = '72157640607666844'; 
2

試試這個在您的JavaScript控制檯:

alert('set:' + 72157640607666844); alerts "set:72157640607666850" for me 
parseInt("72157640607666844") // returns 72157640607666850 for me 

JavaScript不能與數字打交道此大。它內部使用雙精度浮點數來表示數字,並且72157640607666850與JavaScript可以管理的72157640607666844相似。您需要將其保留爲字符串格式或使用像BigNumber這樣的庫來處理此問題。

Here's more information on representing Integers用各種語言。