Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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是什么?。操作人员_Javascript_Operators - Fatal编程技术网

Javascript是什么?。操作人员

Javascript是什么?。操作人员,javascript,operators,Javascript,Operators,我自己创建并回答这个问题,因为谷歌搜索“Javascript?.Operator”并没有提供任何有用的结果 关于……的问题?。需要回答的操作员: 这个接线员叫什么 操作员是如何工作的 typescript是否支持此运算符 这是空传播运算符(也称为存在运算符)。使用运算符称为可选或条件链接 当必须访问中间属性可能为null/未定义的对象的深度嵌套的正确值时,此运算符非常有用 例如考虑此人对象 let person = { name : { first : "John", l

我自己创建并回答这个问题,因为谷歌搜索“Javascript?.Operator”并没有提供任何有用的结果

关于……的问题?。需要回答的操作员:

  • 这个接线员叫什么
  • 操作员是如何工作的
  • typescript是否支持此运算符
  • 这是空传播运算符(也称为存在运算符)。使用运算符称为可选或条件链接
  • 当必须访问中间属性可能为null/未定义的对象的深度嵌套的正确值时,此运算符非常有用
  • 例如考虑此人对象

    let person = {
      name : {
         first : "John",
         last : "Doe"
      },
      age : 31
    }
    
    我将访问此人的姓氏作为

    let lastName = person.name.last;
    
    这都是宏大的,但是如果名称对象不存在呢?前一行代码将抛出以下错误

    未捕获的TypeError:无法读取未定义的属性“last”

    要解决此问题,必须检查name属性以确保其存在。这将把我们简单的一行代码转换为以下代码

    let lastName;
    if(person.name){
     lastName = person.name.last;
    }
    

    第一种选择只是一个麻烦,第二种选择也不是。(我个人认为语法很混乱)第二个选项是检查person是否为truthy如果是,它将检查person.name是否为truthy,如果是person.name.last将保存到lastName中

    这就是Null传播运算符的魔力,我可以将上面的所有代码段重写为

    let lastName = person?.name?.last
    
    现在,如果person或name为null/undefined,lastName将设置为null/undefined,并且不会抛出错误。对于高度嵌套的对象,这可以节省大量的错误检查和代码行

  • 从技术上讲,这只是一个建议的ES7更改(),但如果您在任何chromium浏览器的控制台中尝试它,它都会起作用
  • 从3.7开始,Typescript支持可选链接

  • 这是空传播运算符(也称为存在运算符)。使用运算符称为可选或条件链接
  • 当必须访问中间属性可能为null/未定义的对象的深度嵌套的正确值时,此运算符非常有用
  • 例如考虑此人对象

    let person = {
      name : {
         first : "John",
         last : "Doe"
      },
      age : 31
    }
    
    我将访问此人的姓氏作为

    let lastName = person.name.last;
    
    这都是宏大的,但是如果名称对象不存在呢?前一行代码将抛出以下错误

    未捕获的TypeError:无法读取未定义的属性“last”

    要解决此问题,必须检查name属性以确保其存在。这将把我们简单的一行代码转换为以下代码

    let lastName;
    if(person.name){
     lastName = person.name.last;
    }
    

    第一种选择只是一个麻烦,第二种选择也不是。(我个人认为语法很混乱)第二个选项是检查person是否为truthy如果是,它将检查person.name是否为truthy,如果是person.name.last将保存到lastName中

    这就是Null传播运算符的魔力,我可以将上面的所有代码段重写为

    let lastName = person?.name?.last
    
    现在,如果person或name为null/undefined,lastName将设置为null/undefined,并且不会抛出错误。对于高度嵌套的对象,这可以节省大量的错误检查和代码行

  • 从技术上讲,这只是一个建议的ES7更改(),但如果您在任何chromium浏览器的控制台中尝试它,它都会起作用
  • 从3.7开始,Typescript支持可选链接

    好问题好问题好答案好答案