JavaScript高级程序设计(反刍)1

好久没有看一遍前端的东西了,临近毕业了,虽然事儿很多,每天晚上多学会儿习也让心里也感觉有了一点儿踏实感,最近更新的就是每天看的《JavaScript高级程序设计》这本书的笔记,以及一些个人心得。这本书也是被搞前端的兄弟们奉为《圣经》的一本前端书籍,希望有想要入前端的同学都能看看!
第一章:

简史:JavaScript诞生于1995年,由Netscape公司开发,最早的功能是进行本地数据验证,避免频繁的与服务器进行交互消耗资源。

JavaScript与传统的Java语言没有任何关系,完全是当初的公司为了占便宜才改的名,所以不要因为名字造成歧义。
JavaScript构成
JavaScript包含三部分:

  • ECMAScript (核心)
  • DOM (Document Object Model)
  • BOM (browser Object Model)

第二章:

在HTML文档中,引用JavaScript脚本一般有三种方式:

  1. 在head标签中,直接写入< script>内容< /script>
  2. 在head标签中,写入< script src=”外部js文件”>< /script>
  3. 在body标签的底部,写入< script src=”外部js文件”>< /script>
    (这里注意,当script标签中既出现src外部文件,同时内部也存在js代码时,这里的内部代码不执行!)

延迟脚本:在script标签中,写入defer=”defer”属性,脚本会延迟到整个页面解析完成再执行,且该属性只适用于外部js文件
(个人感觉用延迟脚本不如使用onload( )方法,在外部js文件中加入window.onload( )方法,执行到时解析脚本更好)

文档模式:
最初的文档模式(个人理解为解析HTML文档和js脚本文档的方法)有两种:混杂模式、标准模式。
当HTML文档的开头没有明确标注使用哪种模式,直接写出< html >标签,那么默认使用混杂模式。
HTML5规定了一种新方法启用标准文档模式,直接声明< !DOCTYPE html >,现在一般都使用这一种!

< noscript >标签:着力于当浏览器不支持js脚本或将js脚本禁用情况下使用,用于显示提示性文字!

第三章:

语法上JavaScript区分大小写,推荐采用驼峰写法,过于基本的东西这里不再赘述,不允许将关键字和保留字作为标识符。
ES5加入了严格模式,将在ES3中很多不确定性的因素都进行了规范化的处理,想要在js脚本中启用严格模式,直接在顶部添加 “use strict” 即可。
使用var操作符声明变量,当变量在函数内不经var声明直接调用,那么该变量为全局变量!
ECMAScript存在五种基本数据类型:
Null、Undefined、Number、String、Boolean
以及另一种复杂数据类型:Object

使用typeof操作符检测变量的数据类型:

typeof null;           //object
typeof undefined       //undefined
typeof a1;             //未声明的变量,不报错,undefined
var a2;
typeof a2;             //声明但未赋值,undefined

Number数据类型:
二进制、八进制(第一位必须是0)、十进制、十六进制(前两位必须是0x)
极大极小的数字可以使用e表示法(科学表示法),但是需要注意运算存在精度差
浏览器的最大和最小数字是存在范围的,一般是1.7916931348623157e+308,超出这个范围为 Infinity
NaN,即非数值(Not a Number),这是一个特俗的数值,表示本来要返回数值的操作数,并未返回数值的情况,避免浏览器因为这个原因报错。任何设计NaN的操作都返回NaN,NaN与任何值都不想等,包括其本身。
(其他数据类型这里不再赘述,需要注意的地方也比较少,只是在patseInt数值类型转换和toString转换处需着重看看!)

位操作:
对于有符号的整数,32位中前31位为整数的值,第32位为数值的符号(这里说的第一位第二位是倒着数的)。正数以纯二进制格式存储,31位中每一位都表示2的幂(因为数值存储使用的是64位,但是位操作只能操作32位,所以进行一个转换),负数也以二进制存储,但格式为二进制补码。
按位非(!):对全部的32位进行取反操作
按位与(&):将32位对齐,进行操作 (11=1;10=0;01=0;00=0)
按位或(|):将32位对齐,进行操作 (11=1;10=1;01=1;00=0)
按位异或(^):将32位对齐,进行操作 (11=0;10=1;01=1;00=0)
左移(<<):将原本的位置向左移动,空出的位置以0填充(符号位不变)
有符号右移(>>):将原本的位置向右移动,空出的位置以符号位的值填充
无符号右移(>>>):将原本位置(所有位,包括符号位)向右移动,以0填充空位,负数与正数不一样

逻辑操作:
逻辑非:将Boolean的值变为相反的另一宗
逻辑与:(11=1;10=0;01=0;00=0),这里的逻辑与操作是短路操作,如果第一个操作数可以决定结果,那么将不再执行第二个操作数。
逻辑或:(11=1;10=1;01=1;00=0)

相等操作符:这里有相等(==)和不相等(!=)两种操作方式,但是这两种都会先进行强制类型转换
全等和不全等与前面的相等存在略微差别,全等判断条件更加苛刻

操作符:
逗号操作符:使用该操作符可以直接声明多个变量,但是除此之外还可以用于赋值,返回表达式的最后一项
for-in:一种精准的迭代语句

函数:
使用function声明一个函数,函数中可以存在参数也可以不存在,参数保存在函数中一个叫做arguments的类数组中,可以通过获取arguments的值获取到参数。
(这里需要注意,在严格模式下,直接在函数中使用arguments[key]=value的方式设置值会报错!)
ECMAScript中所有的参数传递都是以值传递的方式进行的,不可能通过引用传递!
ECMAScript中函数不存在重载,当后面的函数与前面的函数重名时,只有后面的函数会执行,前面的函数被覆盖掉!

猜你喜欢

转载自blog.csdn.net/Feng_ye__/article/details/89207513