比如下面这段代码:
for (let i = 1; i < WEAPON_R_LIST.length; i++) {
this.weaponArmature!.armatureName = WEAPON_R_LIST[i];
}
比如下面这段代码:
for (let i = 1; i < WEAPON_R_LIST.length; i++) {
this.weaponArmature!.armatureName = WEAPON_R_LIST[i];
}
!非空声明
class 调用方法或者属性的时候,都需要带感叹号吗?
只是用来消除vscode的报错提示
可以理解为!是你自己100%确定这个对象非空,如果是空就报错。?你把决定权交给编译器,为空就不执行?后面的方法,不为空就执行?后面的方法。
如果你的对象初始化了是非空类型,就不需要这个!或者?。因为你的对象,编译器是不知道是不是为空,如果你使用!,如果程序走到这里是空指针就会报错。不过一般!强制用于数值类的属性,如果是方法可以使用?这样即便是空指针对象也不会报错。
比如 private _vector: Vec3 = new Vec3();
_vector.x = 3;就不用!
private _vector: Vec3 | null = null;
_vector!.x = 3; 就必须用! 如果使用方法就可以使用? _vector?.subtract(…)
总之就是现在的编译器是类型检测类型安全的了。
明白了,多谢多谢!
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。