Scala.js如何测试js.native进程是否将类变量设置为undefined?

时间:2018-05-03 20:18:29

标签: scala.js

请考虑这个Scala.js类:

@JSExport class Example(@JSExport var x: Uint8ClampedArray) { ... }

编辑: [以前用过:case class Example(var x: Array[Int]) { ... }]

现在假设JavaScript本机进程偶尔会将Example.x类变量的值设置为undefined。如何从Example类的方法中测试x的值是undefined还是合法的Int值数组?

你会使用:js.typeOf(x) == "undefined"吗?那会有用吗?还有替代品吗?如果是这样,他们有什么优点和缺点?

1 个答案:

答案 0 :(得分:3)

鉴于您有Uint8ClampedArray这是一种JavaScript类型,Scala.js并未保证在运行时它确实拥有一个Uint8ClampedArray的值。在这种情况下,您确实可以使用

js.typeOf(x) == "undefined"

甚至

(x: Any) == js.undefined

“推荐”方式是使用

js.isUndefined(x)

但其他的一样正确。

顺便说一句:您在评论中说JavaScript代码e.x$1 = undefined。这是未定义的行为,并将在fullOpt中断。您需要使用e.x = undefined,这要归功于@JSExport上的var x