【发布时间】:2012-03-16 04:13:40
【问题描述】:
我正在为 gnome-shell 编写一个扩展。 javascript 扩展产生一个 sql 查询并在标准输出上捕获输出。在 sql 查询计算为 0 个元组/记录的情况下,我的扩展程序崩溃了。
下面是代码sn-p。
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。对象不为空;也不是未定义的。
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 运算符返回一个字符串,因此
typeof <anything> == null永远不会为真。您应该针对其中一种可能的结果(“字符串”、“对象”等)进行测试。无论您使用==还是===都没有区别,因为两者都是 String 类型。 -
当有元组和没有元组时,分配给 out 的实际值是多少?您可能还想了解let operator,它是 JavaScript 但不是 ECMAScript。 gnome-shell 基于哪个?
-
@RobG,当有元组时,'out' 是包含这些元组的字符串。如果没有,任何对“out”的引用都会使 gnome-shell 崩溃。我认为 gnome-shell 是基于 JavaScript(将确认),因为我从一个完美运行的 gnome-shell 扩展中复制了上述语句。