JavaScript是一种广泛应用于Web开发和其他领域的脚本语言,具有丰富的语法和功能。本文将介绍几个JavaScript中常用的语法和一些新的特性,包括"?.与??运算符"、数字分隔符"_"、BigInt数据类型和"in与hasOwn"方法。
1. ?.与??运算符:简化运算逻辑
"?.与??"运算符可以简化条件判断和赋值的逻辑。其中,"?.运算符"可以在多层属性访问中进行短路判断,避免访问不存在的属性而导致报错,并直接赋予最后可访问的属性值;"??运算符"用于处理null或undefined值,当出现这些值时,可以提供一个默认值作为替代。
let data = {}; const msg = data?.msg ?? 'message'; // message
在上述示例中,如果data对象存在msg属性,则将其赋值给msg变量;否则,将默认值'message'赋给msg变量。
2. 数字分隔符"_": 提升数字可读性
数字分隔符"_"在JavaScript中用于分隔较大的数字,以提升数字的可读性。这个分隔符可以按照规律将数字分组显示,使其更易于理解。
const num = 6_000_000_000; // 清晰明了 console.log(num); // 6000000000
通过使用"_"分隔符,我们可以更清晰地表示数字6000000000。
3. BigInt数据类型:处理大数字
在JavaScript中,数字类型受限于Number.MAX_SAFE_INTEGER,即不能安全存储超过某个范围的整数。为了解决这个问题,JavaScript引入了BigInt数据类型,用于处理大数字。
const bigNum = BigInt(Math.pow(2, 53)) + BigInt(1); console.log(bigNum); // 9007199254740993n
在上述示例中,我们使用BigInt()函数将超过Number.MAX_SAFE_INTEGER的数字转换为BigInt类型。这样,我们就可以安全地处理大数字,而不会发生精度丢失的问题。
4. in与hasOwn:判断对象属性的存在
"in"和"hasOwn"用于判断对象中是否存在某个属性。其中,"hasOwnProperty"方法只能检测实例属性,无法检测原型链上的属性;而"in"操作符可以检测实例属性和原型链上的属性。
class Person { constructor(name) { this.name = name; } getName() { return name; } } constperson = new Person(12, 88); console.log(person.hasOwnProperty("xiaoming")); // trueconsole.log(person.hasOwnProperty("getName")); // false console.log("name" in person); // true console.log("getName" in person); // true
在上述示例中,我们创建了一个Person类的实例person,并使用"hasOwnProperty"方法和"in"操作符来检测属性的存在。需要注意的是,当使用Object.create(null)创建的对象时,"hasOwnProperty"方法会出现异常错误,而"in"操作符不会。