关闭

JavaScript中 ?

时间: 2020-10-09阅读: 43标签: 类型

起因

最近在研究 cron 表达式和时间的互相转化问题,然后突然看到了一个有意思的语法,于是就拿来研究了一下。


一、js 中神奇的 ?

说到 ? ,大家肯定都不陌生吧,立马就能够想到三元表达式,当然还有其它的语法,比如双问号语法 ?? ,还有在正则表达式中。

1、三元表达式

 var flag = true;
var log = flag ? '真' : '假';
console.log(log);  //  真

大家都知道这个,就是指 ? 前面的表达式为真时会执行 : 前面的语句,否则执行 : 后面的,所以这个地方必定输出为真。

2、??

有了前面提到的 第1点,我相信这一个很好理解。

说到双问号语法,就不得不说 || 、 && 这两个语法了,但是我相信大家都已经很清楚这两个语法了。

无非就是逻辑运算 或 和 与。
var flag = true;
var log = flag || '逻辑或';
console.log(log);  //  true
var flag = false;
var log = flag || '逻辑或';
console.log(log);  //  逻辑或
var flag = null;
var log = flag || false;
console.log(log);  //  false

嗯...言简意赅。  

var flag = true;
var log = flag && '逻辑与';
console.log(log);  //  逻辑与
var flag = false;
var log = flag && '逻辑与';
console.log(log);  //  false
var flag = null;
var log = flag && false;
console.log(log);  //  null

嗯...挺明显的吧,短路操作。  

重头戏来了,双 ?? 。

var flag = true;
var log = flag ?? '??';
console.log(log);  //  true
var flag = false;
var log = flag ?? '??';
console.log(log);  //  false
var flag = undefined;
var log = flag ?? '??';
console.log(log);  //  ??
var flag = null;
var log = flag ?? '??';
console.log(log);  //  ??

咳咳,其实感觉和 || 很像,只不过只有在前面的表达式为 undefined 或者 null 时,才会执行后面的语句,否则不论前面的表达式为真还是为假都会执行前面的语句,而 || 的前面只要为假时就会执行后面的语句了。


二、?

如果你以为我只是想说这个,那你就大错特错了,因为这些老掉牙的都说过不知道多少遍了,大家都懂,但是下面要说的这个我之前是真的没见过,可能是我孤陋寡闻吧。
提前尴尬一波。。。

?

大家在取数组或者对象中的值时是不是一定会用到

var arr = [0, 1, 2];
arr[0]; // 0
arr[1]; // 1

var obj = {a: 1, b: 2, c: 3};
obj['a']; // 1
obj['b']; // 2

诸如此类的方法。

但是如果在取值前 arr 或者 obj 为 undefined 或者 null 那么将会报错,
所以有了这神奇的操作。

var arr = [0, 1, 2];
arr?.[0]; // 0
arr?.[1]; // 1

var obj = {a: 1, b: 2, c: 3};
obj?.['a']; // 1
obj?.['b']; // 2

可以看到取值其实是一样的,只不过当 arr 或者 obj 为 undefined 或者 null 时并不会报错,而是返回 undefined , 如下图。



来自:https://www.cnblogs.com/nyya/archive/2021/01/08/14251761.html

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/10050

关闭

JavaScript数据类型

JavaScript区别于其他编程语言(如Java、C等),在定义变量时无需指定特定的数据类型(如数值、字符串等),使用var就能定义所有数据类型的变量,因为在程序运行期间,会自动判断变量的具体数据类型。

Js的typeof返回哪些数据类型?

JavaScript中的数据类型:值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型:对象(Object)、数组(Array)、函数(Function)。

Js判断变量的数据类型

判断变量类型的所有方法中,该方法可以说是判断的最完全的方法,所有的数据类型都可以判断,在使用Object.prototype.toString.call()方法判断变量类型时,需要判断的变量会放在小括号内

javascript的nan是什么?

NaN(Not a Number,非数)是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。常在浮点数运算中使用。首次引入NaN的是1985年的IEEE 754浮点数标准。

js中关于带数字类型参数传参丢失首位数字0问题

最近在项目中遇到一个问题,js中传带有数字的参数时,如果参数开头有数字0,会把0给去掉,由于js对数据类型没有一个具体的声明,传入的数值有可能被其默认当中数字,而将多余的0给自动去除了。

JavaScript 数据类型与类型判断详解

原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。typeof这应该初学者首次接触的类型判断方法了,它返回一个表示数据类型的字符串,返回结果包括:

JS中Null与Undefined的区别

在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。

TypeScript基础类型

为了让程序有价值,我们需要能够处理最简单的数据单元:数字,字符串,结构体,布尔值等。 TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。

Js将字符串转数字的方式

Js字符串转换数字方方式主要有三类:转换函数、强制类型转换、弱类型隐式类型转换,利用这三类转换的方式可以有5种转换的方法。

js数据类型

数据类型指的就是字面量的类型。js有6种数据类型:String 字符串、Number 数值、 Boolean 布尔值、Null 空值、Undefined 未定义、Object 对象。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!