您好,我来自c ++背景,所以我以前从未遇到过这个问题;在javascript我只是试图检查两个字符串之间的相等,并遇到一些麻烦。例如,如果我这样做:
...
Component.onCompleted: {
var arr = [img1]
if(arr[0].source === "qrc:/image.png"){ //using === don't work
console.log("ok")
}
}
Image{
id: img1
width: 100
height: 100
source: "image.png"
}
没有任何反应,因为当它应该是真的时,它似乎没有被评估为真。但是,如果我使用==代替,它确实评估为真,但我得到类型coersion的警告......
UPDATE 根据评论,我似乎需要首先检查源的类型然后检查字符串,所以我尝试:
var arr = [img1]
console.log(typeof arr[0].source)
if(typeof arr[0].source === Object){
if(arr[0].source === "qrc:/image.png"){
console.log("ok")
}
}
但是第一次检查是假的,虽然它是一个对象......仍然无法正常工作。
解决
我只需要在源代码上调用toString()来启用严格类型和值比较:
var arr = [img1]
if(arr[0].source.toString() === "qrc:/image.png"){
console.log("ok")
}
感谢所有帮助......