这个需要怎么改啊
if(active<flakesMaxActive){with(s.flakes[parseInt(rnd(s.flakes.length))]){if(!snowCollect&&active==0){recycle();}else if(active==-1){active=1;}}}}
"with" 语句在严格模式下不允许使用,因为它可能导致意外行为并使代码难以理解。
您可以使用更明确的方法来替换 "with" 语句,例如将要操作的对象分配给变量,然后使用该变量访问其属性。 以下是代码如何重写的示例:
if(active<flakesMaxActive) {
var randomFlake = s.flakes[parselnt(rnd(s.flakes.length))];
if(!randomFlake.snowCollect && randomFlake.active == 0){
randomFlake.recycle();
}else if(randomFlake.active == -1){
randomFlake.active = 1;
}
}
您还应该更新使用 "with" 语句的其他部分的代码,以避免任何错误或意外行为。
这是java吗,确定不是js?
报错说,在严格模式下不允许使用with关键字
问题的标签错了吧,这个应该是js。
代码里是不是加了'use strict'
?那个报错就是指在严格模式下不能使用with
,删掉就行了。
删掉
use strict
这一行代码
或者不用with关键字
if (active < flakesMaxActive) {
// 变量抽取出来
let flake = s.flakes[parseInt(rnd(s.flakes.length))];
// 改为对变量的调用,可能不完全,你看看哪些是"flakes"的方法或者属性
if (!flake.snowCollect && active == 0) {
flake.recycle();
} else if (active == -1) {
active = 1;
}
}
谢邀
评论区有2位已经说到点子上了,你参考一下这篇文章的解释,或许更清楚,我就不复制过来了,仅供参考:
http://linterrors.com/js/with-is-not-allowed-in-strict-mode
不要使用with了,这个东西真心不推荐,你看现在还有谁这样写?用es6的解构赋值吧,const { a, b } = obj类似这样
谢邀
评论区有3位已经说到点子上了,你参考一下这篇文章的解释,或许更清楚,我就不复制过来了,仅供参考:
http://linterrors.com/js/with-is-not-allowed-in-strict-mode
严格模式下,不允许使用with,改成普通的js语法试试。