首页 > 其他分享 >js 判空

js 判空

时间:2023-11-08 10:33:42浏览次数:28  
标签:const log Object js 判空 obj console 属性

JSON.stringify

JSON.stringify 方法可以使对象序列化,转为相应的 JSON 格式。

const obj = {};

console.log(JSON.stringify(obj) === '{}')  // true

缺点:如果存在 undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。

Object.keys

 Object.keys 会返回对象自身可枚举属性组成的数组,而不会遍历原型上的属性。

const obj = {}
Object.prototype.a = 1

console.log(Object.keys(obj).length === 0)  // true

缺点:Object.keys 和 for in 都只能遍历可枚举属性,不能遍历不可枚举的属性。

Object.getOwnPropertyNames

使用 Object.getOwnPropertyNames 可以得到对象自身的所有属性名组成的数组(包括不可枚举属性)。

const obj = {}
Object.defineProperty(obj, 'a', {
  value: 1,
  enumerable: false
})

console.log(Object.getOwnPropertyNames(obj))  // [ 'a' ]

缺点:不能获取 Symbol 值作为名称的属性

Reflect.ownKeys

Reflect.ownKeys 方法返回一个由目标对象自身的属性组成的数组,它的返回值等同于 Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))

const a = Symbol()
const obj1 = {
  [a]: 1
}
const obj2 = {b: 2}
const obj3 = {}
Object.defineProperty(obj3, 'a', {
  value: 1,
  enumerable: false
})
const obj4 = {}

console.log(Reflect.ownKeys(obj1).length === 0)  // false
console.log(Reflect.ownKeys(obj2).length === 0)  // false
console.log(Reflect.ownKeys(obj3).length === 0)  // false
console.log(Reflect.ownKeys(obj4).length === 0)  // true

标签:const,log,Object,js,判空,obj,console,属性
From: https://blog.51cto.com/u_14914383/8245882

相关文章

  • gjson
    1.通配符‘#’1.1例子在gjson中,井号#是一个通配符,用于匹配JSON数组中的所有元素。在你的查询中,#用于匹配NetworkAdapterComplexes数组中的每个元素,然后继续沿着JSON结构的路径。让我们解释你的查询的各个部分:NetworkAdapterComplexes.#:这部分使用#通配符,匹配......
  • Node.js如何处理多个请求?
    Node.js如何处理多个请求?前言在计算机科学领域,关于并发和并行的概念经常被提及。然而,这两个术语常常被混为一谈,导致很多人对它们的理解存在着很多混淆。本文小编将通过对并发和并行的深入解析,帮助读者更好地理解它们之间的不同特点和应用场景。同时,文章还将介绍Node.js如何高效......
  • js返回未来或过去7天等时间合集(任意日期区间合集)
    /***时间前后向前推算时间集合*@param{string:before|after}timebd:获取时间往后推,还是往前推,*@param{boole}haveCurrentDay:包不包含当天时间,*@param{number}Days:计算几天的时间,*@param{string:"2023-11-02"}timing:指定不指定当天的日期*@return{array}......
  • @RequestBody接收Json参数 用自定义注解对Vo对象中Date类型日期格式校验
    @RequestBody接收Json参数|用自定义注解对Vo对象中Date类型日期格式校验问题描述昨天测试的同事测试接口的时候,测试出来一个Date类型校验问题。要求输入的日期格式是:yyyy-MM-ddHH:mm:ss,Vo中使用的注解如下:@DateTimeFormat(pattern=”yyyy-MM-ddHH:mm:ss”)测试同事输入下面两种......
  • ES6 module和CommonJS的区别
    ES6module和CommonJS的区别主要有5点ES6module是编译时导出接口,CommonJS是运行时导出对象。ES6module输出的值的引用,CommonJS输出的是一个值的拷贝。ES6module语法是静态的,CommonJS语法是动态的。ES6module导入模块的是只读的引用,CommonJS导入的是可变的,是一个普通的变......
  • 前端实现Excel导出【xlsx】【xlsx-js-style】
    最终效果场景有的时候我们需要根据服务端返回的数据来导出excel表格优化一:设置单元格样式比如:可以调节背景色、字体样式、borderxlsx基础库不提供样式设置,可以使用xlsx-js-style库,这个库是xlsx库的fork版本,并添加了样式定义详细样式可以查看https://github.com/gitbrent/xl......
  • js 数组和对象解构
    //数组--//结构赋值//constarr=[[2,6,8],4,9]//let[a,b,c]=arr//console.log(a)//2//console.log(b)//4//console.log(c)//9//交换变......
  • js的变量
    变量的定义及语法变量是指在一个程序中保存数据的容器,是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据语法:var变量名=值实操:varx=100document.write(x+1000)//注意:没有加单引号哦!varx=200vary=x+1000document.write(y)var......
  • js怎么向html中的某个标签添加内容?举个简单能动的例子
    在JavaScript中,你可以通过多种方式向HTML元素添加内容。以下是两种常见的方法:innerHTML:这个属性用来获取或替换HTML元素的内容。appendChild():这个方法用来向节点添加最后一个子节点。以下是一个简单的例子,展示了如何使用这两种方法:假设你有这样一个HTML结构:<!DOCTYPEhtml......
  • js设置元素不可见怎么设置,举个简单的例子
    在JavaScript中,你可以通过改变元素的样式属性来设置元素的可见性。通常有两种方法可以设置元素不可见:使用 visibility 属性: 设置为 hidden,元素会变得不可见,但它仍然占据原来的空间。使用 display 属性: 设置为 none,元素不仅不可见,而且不再占据页面布局的空间。下面是......