Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法分配变量,因为类型为null?_Javascript - Fatal编程技术网

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
没有属性。