高程读书笔记

本文介绍了JavaScript的诞生、发展及标准制定,指出其由ECMAScript、BOM和DOM组成。阐述了DOM可控制页面内容和解构,还说明了在HTML中使用script标签的不同情况。此外,详细讲解了JavaScript的数据类型,如Undefined、Null、Boolean、Number等,以及数值转换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.JavaScript简介

  1. js是诞生于1995年,由网景公司的布兰登·艾奇(brendan eich)最初设计出来是为了表单验证,只花了10天设计出来,JS从一个简单的输入验证器发展到今天成为一个强大的编程语言,完全出乎人民的意料。
  • 吐槽一下:js它的优秀之处并非原创,它的原创之处并不优秀,由于是个胶水语言,很多功能并实现不了,而且疯狂打自己脸,比如es 6 7 8,但是没关系我们爱它。
  1. 当初网景公司蹭JAVA的热度,和SUN公司联合把LiveScript改成了JavaScript。巨硬1996年呢退出了JScript,网景公司弄不赢巨硬呀,于是把JS交给了欧洲计算机制造商协会ECMA。
  2. ECMA把一堆知名公司的程序员联合在一起共同探讨规范,他们经过了数个月的努力定义了一个名为ECMAScript的标准,ECMAScript是JS的标准
  3. javaScript是由3个部分组成在:
  • ECMAScript(提供核心语言功能)
  • 浏览器对象模型(BOM)提供与浏览器交互的方法和接口
  • 文档对象模型(DOM)提供访问和操作网页的方法和借口

1.1文档对象模型(DOM)

DOM是针对XML经过拓展用于HTML的应用程序编程接口(API),DOM把整个页面映射成一个多层节点解构(tree)

通过DOM创建的树形图,开发人员获得了控制页面内容和解构的主动权,通过DOM的api可以轻松自如的,增删改查任何节点

在HTML中使用javaScript

script标签

  1. <script src="script.js"></script>

没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。

  1. <script async src="script.js"></script>

有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。

  1. <script defer src="myscript.js"></script>

有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。

基本概念

数据类型

Undefined

var message 

alert(message)//'undefined'
alert(age) // Uncaught ReferenceError: age is not defined at <anonymous>:4:7

复制代码

任何时候你都没有必要声明一个值为undefind,对于未声明和未初始化的变量,typeof都返回了undefined,这个结果有逻辑上的合理性,虽然这两种变量从技术角度有本质的区别,单思实际上无论那种变量都不能进行真正的操作

var message
typeof message//'undefined'
typeof age //'undefined'
复制代码

Null

null表示空对象指针

typeof null //'object'
复制代码

null派生至undefined,所以
null == undefined

Boolean

5个falsy值

''、0、NaN、undefined、null

Number

八进制以0开头,如果字面值中的数值超出了范围,那就会被当成10进制来解析

var a =070
console.log(a)
//56
复制代码

16进制以0x卡头,后面跟(0-9,A-F),大小写相同,在进行算术计算时,所有以8进制和16进制表示的数值均会准换成10进制

浮点数

浮点数的最高精度是17位小数,在进行算术计算时远不如整数,0.1+0.2=0.300000000000000004,所以,永远不要测定某个特定的浮点数值

数值范围

由于内存的限制,js并不能保存所有的数值,能保存的最小数是Number.MIN_VALUE,在大多数浏览器中,这个数是5e-323,最大数是NumbeR.MAX_VALUE,是1.7976931348623157e+308,如果计算超过了这个数值,那么这个数值会被转化为+Infinity,如果是负数那么是-Infinity。

isFinite(Number.MAX_VALUE)
//true
复制代码

如果某次计算返回了Infinity,那么该值将无法进行下一次计算

NaN

NaN进行任何操作都会返回NaN,NaN也不等于NaN,我们可以使用isNaN()API来检测是否是NaN

数值转换

有3个函数可以进行数值转换Number()、parseInt()、parseFloatI() Number()可以用于任何数据类型,剩下两个专门用于string转number,最好使用后面两个,Number()规格复杂,比如Number('')返回0,parseInt('')返回NaN,

Number('213abf')//NaN
parseInt('213abf')//213

Number('213abf')//NaN
parseInt('213abf')//213
复制代码

在es3和es5中对8进制的解析是不同的

parseInt('070')//es3 56
parseInt('070')//es5 70
复制代码

所以无论在任何时候都不要省略parseInt的第二个参数(基数)
如果第一个数字不是string,那么会自动调用toString方法先转化为string

parseInt("17", 8);//15  (1*8^1+7*8^0)
parseInt(021, 8);//15 (021.toString()//17)
复制代码

parseInt('070',8)//56
parseInt('070',10)//79
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值