使用uniapp框架,编译后发现出现如下报错。

对 wxml 文档进行格式化,使用删代码调试的方法最终定位到了报错的内容为以下代码引起
<block wx:if="{{typeof 'a'==='string'&&item.m1==='object'}}">
再进一步排查,发现是对行内判断 typeof 不支持微信小程序造成的。
在 JavaScript 中,typeof 是一个运算符,用于返回一个表示操作数的类型的字符串。它可以用于检查一个值的数据类型,例如:
typeof 5 // 返回 "number" typeof "hello" // 返回 "string"
typeof 运算符可以用于检查任何数据类型,包括原始类型(如数字、字符串、布尔值等)和复杂类型(如对象、数组、函数等)。
然而,由于各个平台对 JavaScript 的支持情况不同,因此 UniApp 中的 JavaScript 代码并不能在所有平台上运行。例如,在微信小程序中,您可能无法使用某些 JavaScript 特性,包括行内 typeof 运算符。
最终解决办法为定义一个方法,在行内调用方法而避免直接调用 typeof。如下所示
<block wx:if="{{getType('a')==='string'&&item.m1==='object'}}">
在页面中定义函数
export default{
// ...
methods: {
getType(v){
return typeof v;
}
}
// ...
}