这篇文章发布于 2024年10月24日,星期四,22:57,归类于 JS API。 阅读 2454 次, 今日 9 次 2 条评论
by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=11387
本文可全文转载,独立域名个人网站无需授权,但需要保留原作者、出处以及文中链接,任何网站均可摘要聚合,商用请联系授权。
一、Object.is和===的区别
Object.is()
静态方法可以比较两个对象是否严格相等,在绝大多数情况下,和三等于号===的作用是一样的。
除了下面两种情况:
1. NaN的比较
如果使用等于好比较,则NaN和NaN的返回结果是false
:
NaN === NaN // false
但使用Object.is()
比较则返回的是true
:
Object.is(NaN, NaN) // true
2. +0和-0的比较
一句话,=== 是认为相等的,而Object.is()
认为是不相等的,代码示意:
+0 === -0 // true Object.is(+0, -0) // false
二、数组at方法和直接索引的区别
已知一个数组 arr = [1,2,3]
,则下面两种写法均等返回数组的第二项内容:
const arr = [1,2,3]; console.log(arr.at(1), arr[1]); // 返回结果:2 2
那问题来了,数组使用at()方法获取选项,和直接使用索引获取有什么区别呢?
区别就在于参数或索引值为负数的时候,直接看例子:
const arr = [1,2,3]; console.log(arr.at(-1), arr[-1]); // 返回结果:3 undefined
是这样的,当Array.prototype.at()
方法的参数是负数的时候,其参数值等于该负数和整个数组长度的和。
因此,在上面的例子中,arr.at(-1)
其实等于 arr.at(-1 + 3) => arr.at(2) => 3
这就是最后结果3的由来。
如果负数的绝对值比数组的长度还要大,或者参数是正值,但是超出数组范围,则返回undefined
,因此,就会有下面这样的代码运行效果。
const arr = [1,2,3]; console.log(arr.at(-4), arr[-4]); // 返回结果:undefined undefined console.log(arr.at(3), arr[3]); // 返回结果:undefined undefined
三、substring/slice的区别
字符串的substring()
和slice()
方法在绝大数时候是通用的,可以对字符串进行复制。
区别在于下面这两种场景:
- substring()的参数为负时,视为0,slice()的允许负数参数,例如:
'HTML并不简单'.substring(-2) // 返回 'HTML并不简单' 'HTML并不简单'.slice(-2) // 返回 '简单'
- substring()的第一个参数大于第二个时,会自动交换,而slice()的第一个参数大于第二个时,输出空字符串,例如:
'HTML并不简单'.substring(4, 2) // 返回 'ML' 'HTML并不简单'.slice(4, 2) // 返回 ''
如果大家无法保证参数的前后大小顺序,则可以考虑使用substring()
方法,其余使用,均建议使用slice()
方法,原因无他,名称简短更好记忆。
四、结束语
JS中还有很多其他作用类似的方法和写法,这就就不一一举例了。
接下来是扯淡碎碎念时间。
上周五去体检了,和之前几年一样,这个彩照啊,慢得要死。去年就说不来这家,结果今年还来,唉,公司体检那几个单位,家附近就这一个。
好在这一次请假了,时间不急,且早有预期,没有之前几年那么令人抓狂。
小朋友周五秋游,从起床醒来到回家,嘴巴乐呵得就没合上过,去海昌海洋馆看了心心念念的………………奥特曼!这玩意,啧啧啧,真是烧金库。门票150就不说了,就那荧光棒,就是演唱会的那种荧光棒,外面几块钱一个的,你猜这里多少钱一根。超乎你的想象,128块钱一个,128呀!说是给奥特曼什么光的力量复活的,还有披风啥的,都是天价,哦,还有,300多块钱还可以和奥特曼合影5张照片。关键,买的人巨多,我只能说,上海有钱人真多。
周末两天去乡下打卡鱼塘的时候的时候,采购了很多葡萄,都很便宜,5块一斤,最贵的也就8块钱,买了好多,多到都带公司来吃了。
听种葡萄的大叔说,还有一个星期就要下市了,普通,且吃且珍惜。
周末两日钓费都是100元,第一天那个鱼塘,不谈了,难钓的不得了,收获几条野生杂鱼,第2天的就好钓多了,都是长江鳊(翘嘴和鳊鱼杂交品种),不过大风大雨的,做钓体验不怎么好。
这周的话,计划去嘉定的拾光生态去钓混养,周日去壹号钓场去钓鲤鱼,顺便试用几个新饵料。
本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=11387
(本篇完)
- JS数组的copyWithin()语法我看了好几遍才懂 (0.714)
- 实用的JS对象分组静态方法Object.groupBy() (0.429)
- ES6 JavaScript Promise的感性认知 (0.143)
- 简单了解HTML5中的Web Notification桌面通知 (0.143)
- 简单了解ES6/ES2015 Symbol() 方法 (0.143)
- 聊聊JS DOM变化的监听检测与应用 (0.143)
- Promise.all、race和any方法都是什么意思? (0.143)
- Proxy是代理,Reflect是干嘛用的? (0.143)
- 深入 JS new Function 语法 (0.143)
- 使用AbortController abort中断原生fetch或axios请求 (0.143)
感谢分享
有……有点水