Scala.js 如何测试 class 变量是否被 js.native 进程设置为未定义?
How can Scala.js test whether a class variable was set to undefined by js.native processes?
请考虑这个Scala.js class:
@JSExport class Example(@JSExport var x: Uint8ClampedArray) { ... }
编辑: [这曾经是:case class Example(var x: Array[Int]) { ... }
]
现在假设 JavaScript 本机进程偶尔将 Example.x class 变量的值设置为 undefined
。如何从示例 class 中的方法测试 x 的值是 undefined
还是合法的 Int 值数组?
您是否只使用:js.typeOf(x) == "undefined"
?那行得通吗?有其他选择吗?如果有,它们有什么优缺点?
鉴于您有一个 Uint8ClampedArray
,它是 JavaScript 类型,Scala.js 不能保证在 运行 时它确实成立一个 Uint8ClampedArray
的值。在那种情况下,您确实可以使用
js.typeOf(x) == "undefined"
甚至
(x: Any) == js.undefined
"recommended"方法是使用
js.isUndefined(x)
但其他的也一样正确。
顺便说一句:您在评论中说 JavaScript 代码执行 e.x = undefined
。这是 未定义的行为,并且会在 fullOpt 中中断。您需要使用 e.x = undefined
,这要归功于 var x
上的 @JSExport
。
请考虑这个Scala.js class:
@JSExport class Example(@JSExport var x: Uint8ClampedArray) { ... }
编辑: [这曾经是:case class Example(var x: Array[Int]) { ... }
]
现在假设 JavaScript 本机进程偶尔将 Example.x class 变量的值设置为 undefined
。如何从示例 class 中的方法测试 x 的值是 undefined
还是合法的 Int 值数组?
您是否只使用:js.typeOf(x) == "undefined"
?那行得通吗?有其他选择吗?如果有,它们有什么优缺点?
鉴于您有一个 Uint8ClampedArray
,它是 JavaScript 类型,Scala.js 不能保证在 运行 时它确实成立一个 Uint8ClampedArray
的值。在那种情况下,您确实可以使用
js.typeOf(x) == "undefined"
甚至
(x: Any) == js.undefined
"recommended"方法是使用
js.isUndefined(x)
但其他的也一样正确。
顺便说一句:您在评论中说 JavaScript 代码执行 e.x = undefined
。这是 未定义的行为,并且会在 fullOpt 中中断。您需要使用 e.x = undefined
,这要归功于 var x
上的 @JSExport
。