Javascript 无法分配变量,因为类型为null?
Javascript 无法分配变量,因为类型为null?,javascript,Javascript,canvas.getActiveObject().type返回画布中当前活动元素的类型 var type = canvas.getActiveObject().type; if(type){ console.log(type); } 但当没有元素处于活动状态时,我会得到TypeError,这当然会发生,因为没有元素处于活动状态,所以没有任何东西可以从中获取ActiveObject TypeError:canvas.getActiveObject(…)为空 当activeObject为
canvas.getActiveObject().type
返回画布中当前活动元素的类型
var type = canvas.getActiveObject().type;
if(type){
console.log(type);
}
但当没有元素处于活动状态时,我会得到TypeError,这当然会发生,因为没有元素处于活动状态,所以没有任何东西可以从中获取ActiveObject
TypeError:canvas.getActiveObject(…)为空
当activeObject
为null
时,为什么不能分配变量
当我尝试时,同样的错误也会发生
var type = '';
if(canvas.getActiveObject().type){
type = canvas.getActiveObject().type
}
不能像对象那样访问空值,我认为应该像对象那样安全地访问值
var type='';
if(canvas.getActiveObject()&&canvas.getActiveObject().type){
type=canvas.getActiveObject().type
}
不能像对象那样访问空值,我认为应该像这样安全地访问值
var type='';
if(canvas.getActiveObject()&&canvas.getActiveObject().type){
type=canvas.getActiveObject().type
}
看起来您试图访问函数getActiveObject()
返回的属性type
,但由于函数返回null
,因此访问type
属性会引发错误。您需要做的是在尝试访问其任何成员之前检查getActiveObject()
的返回值
下面的代码段基于您的代码,在尝试访问驻留在其中的成员之前,它会检查返回的活动对象是否为null
var activeObject = canvas.getActiveObject();
if (activeObject) {
console.log(activeObject.type);
}
看起来您正试图访问函数
getActiveObject()
返回的属性type
,但由于函数返回null
,因此访问type
属性会引发错误。您需要做的是在尝试访问其任何成员之前检查getActiveObject()
的返回值
下面的代码段基于您的代码,在尝试访问驻留在其中的成员之前,它会检查返回的活动对象是否为null
var activeObject = canvas.getActiveObject();
if (activeObject) {
console.log(activeObject.type);
}
canvas.getActiveObject()
正在返回null
这意味着canvas.getActiveObject().type
与null.type
相同
引用null
的任何成员将引发异常
你可以用多种方法来解决这个问题
三行代码:
let type = '';
if(canvas.getActiveObject()) {
type = canvas.getActiveObject().type;
}
或一行:
let type = canvas.getActiveObject()
? canvas.getActiveObject().type
: '';
let type = (canvas.getActiveObject() || { type: ''}).type;
或更紧凑的单层衬里:
let type = canvas.getActiveObject()
? canvas.getActiveObject().type
: '';
let type = (canvas.getActiveObject() || { type: ''}).type;
canvas.getActiveObject()
正在返回null
这意味着canvas.getActiveObject().type
与null.type
相同
引用null
的任何成员将引发异常
你可以用多种方法来解决这个问题
三行代码:
let type = '';
if(canvas.getActiveObject()) {
type = canvas.getActiveObject().type;
}
或一行:
let type = canvas.getActiveObject()
? canvas.getActiveObject().type
: '';
let type = (canvas.getActiveObject() || { type: ''}).type;
或更紧凑的单层衬里:
let type = canvas.getActiveObject()
? canvas.getActiveObject().type
: '';
let type = (canvas.getActiveObject() || { type: ''}).type;
这不是问题所在。错误很明显:
canvas.getActiveObject()
返回一个null
。没有活动对象。因此,您不能要求canvas.getActiveObject().type
,因为这相当于要求null.type
,这是不可能的:null
没有属性。这不是问题所在。错误很明显:canvas.getActiveObject()
返回一个null
。没有活动对象。因此,您不能要求canvas.getActiveObject().type
,因为这相当于要求null.type
,这是不可能的:null
没有属性。