【JavaScript】[]和{} 的转换

背景

javascript 复制代码
([])? true:false
({})? true:false
([] == true)? true:false
({} == true)? true:false
([] === true)? true:false
({} === true)? true:false

分析

\]和{ } 都是复杂类型,以上都是三目运算符判断 **1.判断\[ \]和{ } 是否存在** 声明了这些已经分配了内存,肯定是存在的 ```javascript ([])? true:false //true ({})? true:false //false ``` **2.判断\[ \]和{ }和布尔值的转换** * == 含类型转换 * 如果一个操作数是对象,另一个是基本类型,对象首先会被转换为原始值(调用对象的valueOf()方法,返回自身的话就调用toString()方法),再布尔值转换为数字(‌true 转换为 1,‌false 转换为 0)‌ ```javascript ([] == true)? true:false //false //[]调用toString()为'' //''== 1 为false //''== 0 为true ``` ```javascript ({} == true)? true:false //false //'[object Object]' == 1 为false ``` **3.判断\[ \]和{ } === 的转换** * ===不含类型转换,比较的是地址,基本类型是栈,引用类型是堆 ```javascript ([] === true)? true:false //false ({} === true)? true:false //false ``` * 同类型也不相同,每次创建都会开辟一块新内存 ```javascript ([] === [])? true:false //false ({} === {})? true:false //false ```

相关推荐
颜酱1 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
FansUnion1 小时前
我如何用 Next.js + Supabase + Cloudflare R2 搭建壁纸销售平台——月成本接近 $0
javascript
左夕2 小时前
分不清apply,bind,call?看这篇文章就够了
前端·javascript
滕青山3 小时前
文本行过滤/筛选 在线工具核心JS实现
前端·javascript·vue.js
时光不负努力3 小时前
编程常用模式集合
前端·javascript·typescript
大雨还洅下3 小时前
前端JS: 跨域解决
javascript
OpenTiny社区3 小时前
OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用
前端·javascript·ai编程
梦想CAD控件4 小时前
在线CAD开发包结构与功能说明
前端·javascript·vue.js
时光不负努力4 小时前
TS 常用工具类型
前端·javascript·typescript
Hilaku4 小时前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试