全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2024-09-03_JS包装类:循环中为什么建议用变量存储str.length进行循环判断?

您的位置:首页 >> 新闻 >> 行业资讯

JS包装类:循环中为什么建议用变量存储str.length进行循环判断? 点击关注公众号,“技术干货”及时达!前言在Javascript通常我们在遍历一个字符串的时候通常使用的方式是 var str ="abcdefg"; for(let i=0;istr.length;i++){} 但在最近的学习中,有人建议我最好应该是下面这样执行。 var str ="abcdefg"; for(let i=0,len= str.length;ii++){} 我有点疑惑,这用一个变量存储字符串的长度不是多此一举吗?为什么还建议我使用以下代码呢?抱着怀疑的态度我决定进行效率测试。下面是测试代码。 function test1() { let time1 = Date.now(); for (let i = 0; i str.length; i++) { } let time2 = Date.now(); return time2 - time1; } function test2() { let time1 = Date.now(); for (let i = 0,len = str.length; i i++) { } let time2 = Date.now(); return time2 - time1; } console.log(test1()); console.log(test2()); 当测试集长度为10000长度以下基本没有区别,但是当长度来到十万级别百万的时候,时间消耗确实是有差距的,但都是毫秒级差距。但是虽然效率相差不大,但是到底是什么原因导致的时间上的差距呢?这里就得要先介绍一下JS的基本类了。 JS的原始(基本)数据类型字符串(String) :任何文本信息,用单引号' '或双引号" "包围。数字(Number) :整数或浮点数,包括 Infinity 和 NaN。布尔值(Boolean) :只有两个值,true和false。未定义(Undefined) :表示变量已被声明但没有赋值,或被直接初始化为undefined。Null:表示一个特意设置为空的对象引用,只有一个值null。Symbol(ES6起):一种唯一且不可变的数据类型,常用于对象的键,以避免键名冲突。Bigint (ECMAScript 2020 (ES2020)):能够安全地存储极大或极小的整数值原始数据类型(也称作基本数据类型或者primitive data types)在JavaScript中是不具备自己的方法和属性的。 问题来了,字符串String是原始数据类型,为什么却拥有.length属性呢?而且不只是.length属性,字符串类型还拥有贼多的方法。。。相信已经有小伙伴疑惑了?这不是自相矛盾吗? 但是事实确是两者都是正确的,原始数据类型确实是没有属性和方法,JS在对原始数据进行属性和方法的相关操作的时候会进行包装,下面引出我们真正的猪脚---包装类 包装类原始值(字符串、数字、布尔值和Symbol等)在JavaScript中通常不具备属性和方法。然而,包装类(String、Number、Boolean、Symbol对象)的引入,让这些基本类型在特定情境下也能穿上“对象”的外衣,短暂拥有方法和属性。 相信大家都使用过类型强转类似String(),Number()等,这种就是将一个基本类型,先将一个基本类型包装成一个对象,在返回一个原始数据类型后进行销毁。如下面这行代码: var str ="1231213123123"; console.log(str.length); 这两行代码JS将会这样执行: 临时创建一个String对象,该对象包装了原始的字符串值然后通过这个对象获取长度之后这个临时对象会被销毁难道每次使用方法和属性都要进行对象的创建与销毁吗?答案是:是的,每次使用都要进行创建与销毁。 这下知道为什么在循环中最好先使用一个变量存储字符串的长度,而不是每次循环都直接使用字符串.length属性进行判断了吧。因为每次循环都会进行包装类的创建和销毁,虽然在数据集小的情况下效率影响不大但好歹是有点影响不是 结语总而言之,JavaScript通过对象、包装类以及对未定义属性的处理,展现了其设计哲学的深度与广度。它既是一门灵活多变的语言,也是开发者手中的利器,允许我们在编码的旅途中,以最少的约束,创造无限可能。理解这些机制,不仅能够提升我们的编码技巧,更能在深层次上领悟JavaScript的设计美学,让我们的代码更加优雅、高效。在这条探索之路上,让我们继续前行,揭开更多JavaScript的神秘面纱。 点击关注公众号,“技术干货”及时达! 阅读原文

上一篇:2022-04-15_特别招聘|用自己的方式 , 让世界变得不一样 下一篇:2022-01-04_读一首多彩折纸的灵感之诗 | MindTalk创意公开课 Online

TAG标签:

18
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价