Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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,在JavaScript函数顶部声明变量时,最佳做法是将它们设置为null,还是保留为“未定义”?另一种提问方式是,以下每个选项需要什么样的条件 备选方案A: var a = null, b = null; 备选案文B: var a, b; 当我不赋值时,我声明它们为未定义的,因为它们毕竟是未定义的。唯一需要设置它(或不设置)的时间是,如果您需要显式检查变量a是否被精确设置为null或未定义 if(a === null) { } …不同于: if(a === undefin

在JavaScript函数顶部声明变量时,最佳做法是将它们设置为null,还是保留为“未定义”?另一种提问方式是,以下每个选项需要什么样的条件

备选方案A:

var a = null,
    b = null;
备选案文B:

var a,
    b;

当我不赋值时,我声明它们为未定义的,因为它们毕竟是未定义的。

唯一需要设置它(或不设置)的时间是,如果您需要显式检查变量
a
是否被精确设置为
null
未定义

if(a === null) {

}
…不同于:

if(a === undefined) {

}
也就是说,
a==null&&a==undefined
将返回
true


这取决于上下文

  • “未定义”表示此值不存在<代码>类型
返回“未定义”

  • “null”表示此值存在时带有空值。当您使用
    typeof
    测试“null”时,您将看到它是一个对象。另一种情况是,当您将“null”值序列化到后端服务器(如asp.net mvc)时,服务器将收到“null”,但当您序列化“undefined”时,服务器不太可能收到值


  • 通常,我使用null表示我知道可能具有“null”状态的值;比如说

    if(jane.isManager == false){
      jane.employees = null
    }
    

    否则,如果它是一个尚未定义的变量或函数(因此目前不“可用”),但应该稍后设置,我通常不定义它。

    您可以使用
    在Javascript中声明NULL变量一般来说,我定义了
    NULL
    ,因为它表示有人设置了值,而
    未定义的
    表示没有进行任何设置。

    我通常将其设置为我期望从函数返回的任何值

    如果是字符串,那么我会将其设置为空字符串=“”,对象={}和数组=[],整数=0也是如此


    使用此方法使我无需检查null/undefined。无论结果如何,我的函数都知道如何处理字符串/数组/对象。

    null有两个特性我们应该了解:

  • null是空值或不存在的值
  • null必须被分配
  • 您可以将null分配给变量,以表示当前该变量没有任何值,但稍后它将有任何值。null表示没有值

    示例:-

     let a = null;
     console.log(a); //null
    

    如果使用此值指定某个对象的属性并稍后调用
    JSON.stringify
    later*-将保留空值,但将忽略未定义的属性,如下例所示:

    var a,b=null;
    c={a,b};
    控制台日志(c);
    
    console.log(JSON.stringify(c))//省略a
    我将使用选项
    b
    @Mr.Alien-同意。没有理由使用
    =null
    版本,除非变量值是
    null
    而不是
    undefined
    可能并不总是保持它未定义。在以前的IE版本中,您需要将这段代码更改为
    var a=undefined,b=undefined,否则您的代码在尝试访问它时会生成错误(例如,即使您只是尝试使用
    if(a&&b)
    检查它是否有一些值)。在这种情况下,未设置的变量与未定义的不同。在这种情况下检查null是不好的。因为它违反了javascript中的“避免空比较”最佳实践。您应该只对DOM对象()比较null,我不同意;我们所要做的就是看看一个变量实际上是
    null
    还是
    未定义的
    ——这是完全有效的检查。我同意在您引用的示例中,检查
    null
    是个坏主意,但这只是一种情况:)空字符串和
    null
    是非常不同的事情。那么是否有必要“赋值”未定义,因为正如您所说,它们毕竟是未定义的?如前所述,没有必要声明未定义,但如果您确实声明未定义,那么在测试该值时,您将不知道是故意设置的还是从未实际设置的。这就是为什么在没有值的情况下我更喜欢null。