请考虑这个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"
吗?那会有用吗?还有替代品吗?如果是这样,他们有什么优点和缺点?
答案 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
。