JS基础——栈堆问题、各种数据类型转换、JS常用语句、DOM获取元素方法

堆栈内存

所谓堆栈内存,其实就是在计算机内存中分配出来一块空间,用于执行和存储代码。

堆内存作用:存储引用数据类型

栈内存作用:1、执行代码 2、存储基本数据类型

阿里面试题(关于栈堆内存问题)
let a={
    n:1,
}
let b=a;
a.x=a={
    n:2
}
console.log(a.x);
console.log(b)

各数据类型转换(汇总)

对象转化为数字或字符串

当对象转化为数字时:
首先检测对象的Symbol.toPrimitive这个属性,获取原始值,
如果没有,则继续调用他的valueOf(),继续获取原始值
如果值不是原始值,则继续调用toString转换为字符串
再把字符串基于Number()转换为数字

各类型转换为数字

isNaN、Number、parseInt、parseFloat
在进行加减乘除数学运算时(加号两边有字符串时除外)
==比较
ture ->1 false ->0
‘’ ->0 ‘12’ ->12 ‘珠峰’ ->NaN
null ->0
undefined ->NaN
{} /^$/ function(){} ->NaN
[] ->’’ ->0
[12] ->‘12’ ->12
[12,23] ->‘12,23’ ->NaN
//引用数据类型转换为数字
//通过toString方法把数组转化为字符串,然后在调用Number

运算

1-‘1’ ->0
10/undefined ->NaN
10null ->0
10
[10] ->100

toString转换为字符串

null和undefined有转换为字符串的方法,只是浏览器不让看;
对象转化为字符串比较特殊,不管内容是什么,结果都是[object Object]

把其他数据类型转换为布尔类型

只有0、NaN、空字符串、null、undefined五个转换为false,其余都转为true
使用进行比较时
如果两边类型不一致,则转换为相同的数据类型
NaN
NaN => false ;NaN和任何值比较都不相等
null == undefined ⇒true;
null
=undefined ⇒false
null&undefined和其他任何值比较都是不相等

其余情况大部分是转换为数字比较

对象与对象:比较的是空间地址,不同空间,结果为false

对象和数字:对象转为数字
[] == 0 ->true
({}) == NaN ->false NaN和自己都不相等

对象和字符串:都转化为字符串
[] == ‘’ ->true
[10] == ‘10’=>true

对象和布尔:都转化为数字
[] = = true -> 0 == 1 ->false
[] = = false -> 0 == 0 ->true
![] = = false -> false = =false ->true;!为取反操作,返回值是布尔类型,不需要再进行数据类型转换

>// 习题
// var a = ?;
// if(a==1 & a==2 & a==3) {
//  console.log('ok');
// }
>// 答案1
var a ={
    i:0
};
a[Symbol.toPrimitive] = function () {
    return ++this.i;
}
if(a==1 & a
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南笙前端工程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值