小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如代码片段所示,第一句如果不以";"结尾,第二句如果以"["起头(做ES6的数组解构赋值),就能再现异常。
编译器会把第一句当成一个数组Object,第二句当成从该数组Object中取某个元素,然后就华丽丽地奔溃了…
第一句末尾加上";"结尾,就能使问题消失。
个人判断是编译器缺陷。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你好,对于这类有歧义的代码,请主动加上分号规避。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
但我不认为这属于“歧义”,有明确的换行符、而无续行符的情况下,这应该要被编译器看作两句语句的…
这里的换行符和空格不影响歧义的吧……而分号就是用来分隔语句的啊
看不懂你想表达的逻辑...只重述一遍事实:
分号理应可以省略;只在确实有歧义的地方、我同意不可省略分号
我所引用的代码,并不属于“确实有歧义”;因为两句之间是有换行符而无续行符的,足以被用作分隔语句
基于1、2,我所引用的代码,不存在歧义,却被错误编译了,这就是问题
(您若不是微信官方人员的话,就请等官方人员分析原因后再看吧)
我以前也发现了,
所以最好加 ; 号吧,
不然会莫名其妙的
最好应该是改编译器。不改,就索性不要允许有些行可以尾部省略分号,有些行却竟然不行…
console.log(
"I am here"
)
(
new
SomeClazz()).callSomeOne();
像上面这样
项目里的例子
就是这种,一旦有换行符(且无续行符),编译器就理应能够正确解析成为两句,而不是推给“歧义性”
我是从IDE压缩js文件里找到的, 它将那两行代码合并成一行, 但不是混淆
那其实意味着,IDE的压缩步骤可以改善为在有必要的地方添加“;”号、而不是只为缩短长度无脑压缩。
另外发现,这种数组赋值虽然语法上是允许的,但Chrome V8引擎内部好像也错误地进行了压缩合并、而导致运行时错误…(用node.js测了相同代码)
鉴于小程序在安卓上也是用的V8来解释JavaScript,这就情有可原了……
,你好,所提供的代码片段无法正常运行,请重新提供
你好,可能是本地目录结构变化导致?(原以为代码片段会被压缩上传到云端,不受后续编辑影响的呢)
再次分享后得到的链接,请检验:wechatide://minicode/WWRBnjmG7wnW
还是运营不了。请按照教程提供:https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
真没办法…看教程发现步骤并没错(难道是又发现了代码片段导出的Bug了么…)
一个一个解决先,
这个问题的代码截图如下:
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
你好,对于这类有歧义的代码,请主动加上分号规避。
但我不认为这属于“歧义”,有明确的换行符、而无续行符的情况下,这应该要被编译器看作两句语句的…
这里的换行符和空格不影响歧义的吧……而分号就是用来分隔语句的啊
看不懂你想表达的逻辑...只重述一遍事实:
分号理应可以省略;只在确实有歧义的地方、我同意不可省略分号
我所引用的代码,并不属于“确实有歧义”;因为两句之间是有换行符而无续行符的,足以被用作分隔语句
基于1、2,我所引用的代码,不存在歧义,却被错误编译了,这就是问题
(您若不是微信官方人员的话,就请等官方人员分析原因后再看吧)
我以前也发现了,
所以最好加 ; 号吧,
不然会莫名其妙的
最好应该是改编译器。不改,就索性不要允许有些行可以尾部省略分号,有些行却竟然不行…
console.log(
"I am here"
)
(
new
SomeClazz()).callSomeOne();
像上面这样
项目里的例子
就是这种,一旦有换行符(且无续行符),编译器就理应能够正确解析成为两句,而不是推给“歧义性”
我是从IDE压缩js文件里找到的, 它将那两行代码合并成一行, 但不是混淆
那其实意味着,IDE的压缩步骤可以改善为在有必要的地方添加“;”号、而不是只为缩短长度无脑压缩。
另外发现,这种数组赋值虽然语法上是允许的,但Chrome V8引擎内部好像也错误地进行了压缩合并、而导致运行时错误…(用node.js测了相同代码)
鉴于小程序在安卓上也是用的V8来解释JavaScript,这就情有可原了……
,你好,所提供的代码片段无法正常运行,请重新提供
你好,可能是本地目录结构变化导致?(原以为代码片段会被压缩上传到云端,不受后续编辑影响的呢)
再次分享后得到的链接,请检验:wechatide://minicode/WWRBnjmG7wnW
还是运营不了。请按照教程提供:https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
真没办法…看教程发现步骤并没错(难道是又发现了代码片段导出的Bug了么…)
一个一个解决先,
这个问题的代码截图如下: