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