console.log的那件事
时间:2022-07-24
本文章向大家介绍console.log的那件事,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
起因
- 很多朋友在群里问过,为什么打印的对象/数组里面明明有值,但是我后面打印它某个值跟预期不一样?
看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
<script>
const obj = {
}
console.log(obj, 'obj');
console.log(obj.a, 'a')
obj.a = '前端巅峰';
</script>
</html>
- 这段代码会输出什么?
- 很奇怪,对吧?
讲解
- 当你打印时是空数组/空对象,但是点开后,里面却有属性,这属于
console
执行的那一刻,数组/对象里面是没有元素的,但是后面却被添加了。(不管后面是同步还是异步添加) - 如果一开始就在对象/数组中有的元素,那么就会像下面一样
const obj = {
b:2
}
console.log(obj, 'obj');
console.log(obj.a, 'a')
obj.a = '前端巅峰';
- 输出结果,一开始打印就会在对象中对象对应的数据:
什么时候会出现这种情况
- 像使用
redux
或者使用接口请求回来的数据,异步更新时候,就有可能出现上面这种打印存在不确定的情况
如何避免?
- 使用
JSON.stringify()
打印
const obj = {
}
console.log(JSON.stringify(obj), 'obj')
obj.a = '前端巅峰';
- 这样就不会再出现打印歧义的问题
结语
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 开源测试服务
- Charles报错Failed to install helper解决方案
- [890]scrapy之pipeline的使用
- Redis的slot迁移工具
- 一文搞懂Flink rocksdb中的数据恢复
- Linux expect用法介绍
- GitHub通过access token来clone代码
- 在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入
- 探索闭包
- openresty实现接口签名安全认证
- JavaScript空值合并运算符
- ROS1&2极简版安装配置案例(Noetic&Foxy@Ubuntu20.04)
- Java调用微信扫一扫
- 响应式布局新方案:融合响应式设计,开源 React 组件
- C++核心准则E.26:如果无法抛出异常,尽快进行失败处理