JavaScript基础知识总结(1)

article/2025/10/13 5:11:07

hello小伙伴们,本期来更新一下JavaScript基础知识,当做对JS的复习。

之前更新的有CSS复习和HTML复习,在这里放上链接

前端大厂面试笔记(二)(持续更~~)_Ss、、帅海的博客-CSDN博客

正文开始


1.JS原始数据类型有哪些?引用数据类型有哪些?

在JS中,存在着7种原始值,分别是:

  • boolean
  • null
  • undefined
  • number
  • string
  • symbol
  • bigint

引用数据类型:对象Object(包含普通对象-Object,数组对象-Array,正则对象-RegExp,日期对象-Date,数学函数-Math,函数对象-Function)

2说出下面运行的结果,解释原因。

function test(person) {person.age = 26person = {name : 'CSDN ',age: 18
}return person
}
const p1 = {name : 'SHEQU' ,age: 19
}const p2 = test(p1)console.log(p1) conso1e.log(p2)

结果:

p1:  {name: “SHEQU”,age: 26}
p2:  {name: “CSDN”,age: 18}

原因:在函数传参的时候传递的是对象在堆中的内存地址值,test函数中的实参person是p1对象的内存地址,通过调用person.age = 26确实改变了p1的值,但随后person变成了另一块内存空间的地址,并且在最后将这另外一份内存空间的地址返回,赋给了p2。
 

3.null是对象吗?为什么?


结论: null不是对象。
解释:虽然 typeof null 会输出object,但是这只是JS存在的一个悠久Bug。在JS的最初版本中使用的是32位系统,为了性能考虑使用低位存储变量的类型信息,000开头代表是对象然而null表示为全零,所以将它错误的判断为object 。
 

4."1'.toString()为什么可以调用?

其实在这个语句运行的过程中做了这样几件事情:

var s = new object('1');
s.tostring();
s = null;

第一步:创建Object类实例。注意为什么不是String ?由于Symbol和Biglnt的出现,对它们调用new都会报错,目前ES6规范也不建议用new来创建基本类型的包装类。
第二步:调用实例方法。
第三步:执行完方法立即销毁这个实例。整个过程体现了基本包装类型的性质,而基本包装类型恰恰属于基本数据类型,包括Boolean,Number和String.

 

5.0.1+0.2为什么不等于0.3?

0.1和0.2在转换成二进制后会无限循环,由于标准位数的限制后面多余的位数会被截掉,此时就已经出现了精度的损失,相加后因浮点数小数位的限制而截断的二进制数字在转换为十进制就会变成0.30000000000000004。

 

6.什么是Biglnt?


Biglnt是一种新的数据类型,用于当整数值大于Number数据类型支持的范围时。这种数据类型允许我们安全地对大整数执行算术操作,表示高分辨率的时间戳,使用大整数id,等等,而不需要使用库。

 

7.为什么需要Biglnt?

在JS中,所有的数字都以双精度64位浮点格式表示,那这会带来什么问题呢?
这导致lS中的Number无法精确表示非常大的整数,它会将非常大的整数四舍五入,确切地说,JS中的Number类型只能安全地表示-9007199254740991(-(2个53-1))和9007199254740991 ((2^53-1)),任何超出此范围的整数值都可能失去精度。

console.log(999999999999999);// =>10000000000000000

同时也会有一定的安全性问题:

9007199254740992 === 9007199254740993;// => true 居然是true!

8.如何创建并使用Biglnt?

要创建Biglnt,只需要在数字末尾追加n即可。

console.log(9007199254740995n );// ->9007199254740995n
conso1e.log(9007199254740995 );// ->9007199254740996

另一种创建BigInt的方法是用Biglnt()构造函数、

BigInt("9007199254740995");//-> 9007199254740995n

简单使用如下:

10n + 20n; // ->30n
10n - 20n; // -> -10n
+10n;      //-> TypeError: Cannot convert a BigInt value to a number
-10n;      //-> -10n
10n * 20n; // -> 200n
20n / 10n; //-> 2n
23n % 10n; //-> 3n
10n ** 3n; //-> 1000nconst x = 10n;
++x;       //-> 11n
-—x;       //-> 9n
console.log(typeof x);  //"bigint"

值得警惕的点:


1) BigInt不支持一元加号运算符,这可能是某些程序可能依赖于+始终生成Number的不变量,或者抛出异常。另外,更改+的行为也会破坏asm.js代码。
2)因为隐式类型转换可能丢失信息,所以不允许在bigint和Number之间进行混合操作。当混合使用大整数和浮点数时,结果值可能无法由Biglnt或Number精确表示。

10 + 10n;// -> TypeError

3)不能将BigInt传递给Web api和内置的JS函数,这些函数需要一个Number类型的数字。尝试这样做会报TypeError错误。

Math.max(2n,4n,6n) ;// -> TypeError

4)当Boolean类型与BigInt类型相遇时,BigInt的处理方式与Number类似,换句话说,只要不是on,Biglnt就被视为truthy的值。

if(0n){ //条件判断为false
}
if(3n){//条件为true
}

5)元素都为BigInt的数组可以进行sort。
6) BigInt可以正常地进行位运算,如 |、&、<<、>>和^

浏览器兼容性

a0444eca0e09542c451df3425f038574.png

 


好了,本期就到这里了,若是觉着有用的话,可否给个三连,当然,老规矩,上福利图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3PjgIHjgIHluIXmtbc=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 


http://chatgpt.dhexx.cn/article/eDZRA1H0.shtml

相关文章

JS 基础知识

JS 基础知识 JS简介 JavaScript是一种基于对象和事件驱动并具有安全性能的解释型脚本&#xff0c;在Web应用中得到了非常广泛的应用。它不需要编译&#xff0c;而是直接嵌入在HTTP页面中&#xff0c;把静态页面转变成支持用户交互并响应应用的动态页面。在JavaWeb程序中&#x…

网页游戏开发基础——JavaScript基础知识

对于初学编程的朋友来说&#xff0c;这篇文章有点长&#xff0c;而且会有点难懂。但是请不要放弃&#xff0c;我尽量以通俗的语言解释相关的编程概念&#xff0c;这里只讲解编写一个游戏需要的相关编程概念&#xff08;如需要会在后面的文章中随时补充相关概念&#xff09;&…

js基础知识

1、JS的组成 JS由 ECMAscript BOM DOM组成 ECMAscript是JS基础规范、定义了JS基础语法 BOM浏览器对象模型 DOM文档对象模型 2、JS数据类型 基本数据类型&#xff1a;string number boolean undefined null symbol biginit 引用数据类型&#xff1a;object function ar…

Node.js基础知识

目录 1、为什么浏览器和Node.js都可以运行JavaScript 2、浏览器中运行JavaScript和Node.js中运行JavaScript有什么区别 3、为什么在浏览器中JavaScript不能控制系统级别的API 4、Node.js能做什么 5、全局对象-Node.js和浏览器 6、模块系统 7、Node.js是如何实现模块的&…

JavaScript的基础知识

1.JavaScript简介 以下注解可作为拓展材料&#xff1a; 1、脚本语言又被称为扩建的语言&#xff0c;或者动态语言&#xff0c;是一种编程语言&#xff0c;用来控制软件应用程序&#xff0c;脚本通常以文本&#xff08;如ASCII)保存&#xff0c;只在被调用时进行解释或编译。 …

Javascript 基础知识学习

Javascript 基础知识学习 参考自&#xff1a;https://www.w3cschool.cn/javascript/ javascript 简介 JavaScript 是互联网上最流行的脚本语言&#xff0c;这门语言可用于 HTML 和 web&#xff0c;更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。 JavaScri…

JavaScript基础知识总结

一、基本语法&#xff08;数量&#xff0c;数据类型和运算符&#xff09; 1.变量&#xff1a;指的是在数据中心保存数据的容器 变量是计算机内存中存储数据的标识符&#xff0c;根据变量名称可以获取到内存中存储的数据 也就是说&#xff0c;我们向内存中存储了一个数据&…

JS基础知识总结 (一)

一、JS简介 JavaScript是一种运行在客户端的脚本语言&#xff0c;最早是在HTML&#xff08;标准通用标记语言下的一个应用&#xff09;网页上使用&#xff0c;用来给HTML网页增加动态功能。 浏览器就是一种运行JavaScript脚本语言的客户端&#xff0c;JavaScript的解释器被称为…

最新Javascript 基础知识全总结(持续更新)

目录 一,JavaScript 是什么 1, JavaScript 是什么 2, 作用 3, JavaScript的组成 二, JavaScript 书写位置 1,内部 JavaScript 2, 外部 JavaScript 3, 内联 JavaScript 三, JavaScript 的注释 1, 单行注释 2, 多行注释 四, JavaScript的结束符 五, 输入和输出语法 …

JS入门基础知识

一、JS是什么 1、JS概述 JavaScript是一个轻量级的语句&#xff0c;他是单线程的语言&#xff08;一个线程解析&#xff09;。他是一个弱语言&#xff08;他没有固定 的类型划分 你给定的值是什么类型 他就是什么类型&#xff09;他还是一个脚本语言&#xff08;侵入 实现xss攻…

2020年4月中国编程语言排行榜

本文已过时 都7月了&#xff0c;你该看7月的数据去了&#xff1a; 2020年7月中国编程语言排行榜 2020年7月程序员工资统计&#xff0c;平均14357元&#xff0c;又跌了&#xff0c;扎心 编程语言比例 排名编程语言平均工资工资中位数最低工资最高工资人头人头百分比1rust2…

2020年5月中国编程语言排行榜

本文已过时 都7月了&#xff0c;你该看7月的数据去了&#xff1a; 2020年7月中国编程语言排行榜 2020年7月程序员工资统计&#xff0c;平均14357元&#xff0c;又跌了&#xff0c;扎心 编程语言比例 排名编程语言平均工资工资中位数最低工资最高工资人头人头百分比1scala20…

2021年10月世界编程语言排行

2021 年10 月的 TIOBE 指数 10月头条&#xff1a;Python编程语言流行指数排名第一&#xff01; 20多年来&#xff0c;我们第一次有了一个新的领导者&#xff1a;Python编程语言。Java和C的长期霸权已经结束。Python最初是一种简单的脚本语言&#xff0c;作为Perl的替代品&…

2023十大最牛编程语言排行榜以及各语言的优缺点

文章目录 ⭐️ 2023年7月十大编程语言排行榜⭐️ 十大值得学习编程语言概要&#x1f31f; Python&#x1f31f; C/C&#x1f31f; Java&#x1f31f; C#&#x1f31f; JavaScript&#x1f31f; Swift&#x1f31f; Ruby&#x1f31f; GO&#xff08;Golang&#xff09;&#x1…

最难学的10大编程语言排行榜,Java只排第三,第一名出乎意料

2018年12月的TIOBE编程语言排行榜已经出炉,Python重回前三,Go语言跌出前十,Visual Basic.NET涨幅明显,保持第五名。 TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排…

最难学的十大编程语言,C++排第二,它竟是第一名!不服

编程语言是开发者们代码工作的核心&#xff0c;也是许多开发者最爱讨论的话题。编程语言的选择对开发者和工具制造商都十分重要&#xff0c;前者需要保持最新和具备市场潜力的技能&#xff0c;后者则亟需确保他们能够提供最有用的 SDK。 开发者经济分析公司 SlashData 曾发布了…

2020年最新编程语言排行榜出炉TIOBE

2020年1月TIOBE指数 一月标题&#xff1a;编程语言C荣获2019年度最佳编程语言 每个人都认为Python将连续第二年成为TIOBE的年度编程语言。但这一次是好的老语言C凭借2.4&#xff05;的年增长率获得了奖项。排名第二的是C&#xff03;&#xff08;2.1&#xff05;&#xff09;…

编程语言 Top 5 榜单:最容易学的编程语言 VS 最难学的编程语言

在线学习平台Springboard 罗列了一个最容易学习和最难学的编程语言 Top 5 榜单。 事实上&#xff0c;问一个程序员最容易学习的语言&#xff0c;就像问一个人他们最喜欢的冰淇淋。每个人都有自己的偏好&#xff0c;永远没有真正的正确答案。正如开发者和教育家 Marek Zaluski …

2021年编程语言排行榜出炉,第一名实至名归!

点击上方“码农突围”&#xff0c;马上关注 这里是码农充电第一站&#xff0c;回复“666”&#xff0c;获取一份专属大礼包 真爱&#xff0c;请设置“星标”或点个“在看 在TIOBE公布的近一期榜单中&#xff0c;2021编程语言排名前十的分别是&#xff1a;Python&#xff0c;Jav…

2018十大最热门编程语言排行榜出炉,Java竟不是第一!

编程语言的受欢迎程度、学习的人群数量&#xff0c;以及由于人工智能的兴起&#xff0c;最热门的编程语言排行榜也发生了变化。让我们来看看。 1、Python Python的历史可以追溯到1989年&#xff0c;因其高度可读的代码而深受其粉丝的喜爱。许多程序员认为这是最简单的语言开始…