1
我正在爲gnome-shell編寫擴展。 javascript擴展生成一個sql查詢並捕獲標準輸出上的輸出。在sql查詢計算爲0元組/記錄的情況下,我的擴展崩潰了。將不包含任何內容的javascript對象轉換爲字符串
下面是代碼片段。
let [success, out, err, error] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
let result = out.toString(); // Crashing here for 0 tuples. I was expecting 'result = ""'
我是一個JavaScript的新手。我不瞭解在這種情況下應如何處理對象out
。該對象不是null;也不是未定義的。
typeof out == null // false
typeof out == undefined // false
typeof out == "object" // true
編輯
typeof out == "null" // false
typeof out == "undefined" // false
typeof out == "object" // true
[typeof](http://es5.github.com/#x11.4.3)運算符返回一個字符串,所以'typeof == null'永遠不會成立。您應該測試其中一種可能的結果(「字符串」,「對象」等)。無論你使用'=='還是'==='都沒有區別,因爲兩者都是String類型。 –
RobG
2012-03-16 04:34:16
有元組時有什麼實際的值被排除*有元組,什麼時候沒有?您可能還想了解[let operator](https://developer.mozilla.org/en/JavaScript/Reference/Statements/let),它是JavaScript而不是ECMAScript。哪個是基於gnome-shell的? – RobG 2012-03-16 05:34:15
@RobG,當有元組時,'out'是包含這些元組的字符串。當沒有時,任何對'out'的引用都會使gnome-shell崩潰。我認爲gnome-shell基於JavaScript(將得到證實),因爲我從一個完美的gnome-shell擴展中複製了上述語句。 – 2012-03-16 06:05:29