阮一峰老师JavaScript课程学习笔记

1、switch采用的是严格相等运算符

2、break和continue都具有跳转作用,break语句跳出循环,continue用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。

3、JavaScript内部所有数字都是以64位浮点数形式存储,涉及小数的运算和比较需要特别小心。 (-1)^符号位 * 1.xx...xx * 2^指数位

4、NaN是JavaScript的特殊值,表示“非数字(Not a Number)”,主要出现在将字符串解析成数字出错的场合。NaN不等于任何值,包括它本身。

5、不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量会影响到其他所有变量。

对于原始类型的数据是传值引用,也就是说都是值的拷贝。

6、with语句作用在于操作同一对象的多个属性时,提供一些书写方便。with区块没有改变作用域,它的内部依然是当前作用域。

with(object){statement;} 由于无法操作的变量是object的属性还是全局变量,不利于代码的除错和模块化。with绑定对象不明确。

而利用该特点,可以实现模版引擎。

7、典型的类似数组的对象是函数的arguments对象,以及大多数的DOM元素集,还有字符串。

8、函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时的作用域无关。

函数声明时是不带分号的,函数体内部声明的函数,作用域绑定函数体内部。

9、需要注意的是,函数的length属性与实际传入的参数个数无关,只反映函数预期传入的参数个数。

10、函数如果是原始的数据类型(数值、字符串、布尔值),传递的方式是值传递。这意味着在函数体内部修改参数值,不会影响到函数外部。

如果是复合类型的参数(数组、对象、其他函数),传递方式是传址传递。也就是说传入函数的原始值的地址,因此在函数内部修改参数,会影响到原始值。

11、闭包最大的用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保存在内存中,即闭包可以使它诞生环境一直存在。闭包使得内部

变量记住上一次调用时的运算结果。闭包的另一个用处是封装对象的私有属性和私有方法。

12、JavaScript引擎内部,eval实际上是一个引用,默认调用一个内部方法。这使得eval的使用分成两种情况,一种为直接调用,作用域为当前作用域;

除此之外的调用方法,都叫“间接调用”,此时eval的作用域的全局作用域。

13、自增和自减运算符有一个需要注意的地方,就是放在变量之后,会先返回变量操作前的值,再进行自增自减操作;放在变量之前,会先进行自增、自减操作,

再返回变量操作后的值。

14、所有构造函数都有一个prototype属性,指向一个原型对象。凡是定义在Object.prototype对象上面的属性和方法,将被所有实例对象共享。

http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html 关于原型链继承详细的解释。

15、Array方法汇总。

(a)、push、pop、shift、unshift都是属于在数组前后增加或者删除元素,所以期望改变原数组。

(b)、slice、splice、reverse、sort对数组进行切割、逆序或者排序,所以期望改变原数组。

(c)、map、reduced、filter函数式编程中作用于数组的方法,用于生成新的数组,故原数组不会发生变化。

(d)、需要循环终止时,使用for,不需要终止循环,使用forEach。

(e)、concat和jion用于多个数组的合并,故原数组保持不变。

16、JavaScript设计包装对象最大的目的,首先是使得JavaScript的“对象”涵盖所有值。其次,使得原始类型的值可以很方便地调用特定方法。

17、正则表达式:

正则表达式对象的相关方法:

Regex.test(String):正则表达式的test方法返回一个布尔值,表示当前模式是否能够匹配参数字符串。

Regex.exec(String):正则对象的exec方法,可以返回匹配结果。如果发现匹配返回一个数组,成员是每个匹配成功的字符串,否则返回null。

字符串对象的相关正则方法:

String.math(Regex):返回一个数组,成员是所有匹配的子字符串。

String.search(Regex):按照给定的正则表达式进行搜索,返回一个整数,表示匹配开始的位置。

String.replace(Regex):按照给定的正则表达式进行替换,返回替换后的字符串。

String.split(Regex):按照给定规则进行字符串分割,返回一个数组,包含分割后的各个成员。

18、JavaScript提供一种内部数据结构,用来描述一个对象的属性的行为,控制它的行为。这些成为“属性描述对象”。每个属性都有自己对应的属性描述对象,

保存该属性的一些元信息。

19、使用new命令创建实例流程:

a、创建一个空对象,作为要返回的实例对象,

b、将这个空对象的原型,指向函数对象的prototype属性

c、将这个空对象赋值给函数内部的this关键字

d、开始执行构造函数内部的代码

20、this的使用可以分为以下几个场合:1、全局环境  2、构造函数  3、对象的方法

21、函数实例的call方法,可以指定该函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。

call方法的一个应用是调用对象的原生方法。

22、apply和call第一个参数都是this所要指向的那个对象,如果设为null或undefined,则等同于指定全局对象。apply的参数为数组。

23、对象本身的属性中,有的是可以枚举的,有的是不可以枚举的。Object.getOwnPropertyNames方法返回所有键名。只获取那些

可以枚举的属性,使用Object.keys方法。

24、所有的任务可以分为两种,一种是同步任务,另一种是异步任务。

同步任务是指,在JavaScript执行进程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务是指不进入JavaScript执行进程,而是进入

“任务队列(task queue)”的任务,只有“任务队列”通知主进程,某个异步任务可以执行了,该任务(采用回调函数的形式)才会进入JavaScript进程执行。

25、DOM的最小组成单位是节点。文档的树形结构(DOM树),就是由各种不同类型的节点组成,节点的类型有7种。Document、DocumentType、Element、Attribute、Text、Comment、DocumentFragment

26、渲染引擎处理网页分为四个阶段:

1.解析代码,HTML代码解析为DOM,CSS代码解析为CSSOM;

2.对象合成,将DOM树和CSSOM树合成一个渲染树

3.布局:计算出渲染树的布局

4.绘制:将渲染树绘制到屏幕上

27、有限状态机是一种非常有用的模型,可以模拟世界上大部分事物。

1.状态总数是有限的;

2.任一时刻,只处在一种状态中

3.某种条件下,会从一种状态转变到另一种状态

28、当一个函数并非一个对象的属性时,那么它是被当成一个函数来调用的,以此模式调用函数时,this被绑定到全局对象。

29、wen跨域的实现方式:

1)同域安全策略CORS,需常规存放资源的服务器在响应报头添加Access-Control-Allow-Origin标签,从而允许指定站点

访问当前站点的资源。 -----即需服务端支持

2)H5解决方案:通过不同的页面之间进行消息通信实现。

3)websocket是H5的一种新协议,实现了服务端和浏览器之前的全双工通信,同时也允许跨域通讯。

4)JSONP,主要是利用script标签不受同源策略限制的特性,向跨域的服务器请求并返回一段JSON数据。

30、通行的JavaScript模块规范主要有两种:CommonJS和AMD,

1)定义模块:根据CommonJS规范,一个单独的文件就是一个模块。每个模块都是单独的作用域,也就是说,在该模块

内部定义的变量,无法被其它模块读取,除非定义为global对象的属性。

2)模块输出:模块只有一个出口,module.exports对象,我们需要把模块希望输出的内容放入该对象。

3)加载模块:加载模块使用require方法,该方法读取一个文件并执行,返回文件内部的module.exports对象。

31、AMD和CMD的区别:

1)AMD推崇依赖前置,在定义模块时就声明其依赖的模块

2)CMD推崇就近依赖,只有在用到某个模块的时候再去require。

32、

来自为知笔记(Wiz)

时间: 2024-10-10 16:57:53

阮一峰老师JavaScript课程学习笔记的相关文章

关于阮一峰老师es6(第三版)中管道机制代码的理解浅析

最近正在学习阮一峰老师的es6(第三版)教材,在学到第七章<函数的扩展>中的箭头函数嵌套时,文中提到了一个关于“管道机制”的示例,文中源代码如下: //es6(第三版)教材中的管道机制源代码: const pipeline = (...funcs) => val => funcs.reduce((a, b) => b(a), val); const plus1 = a => a + 1; const mult2 = a => a * 2; const addThe

JavaScript闭包学习笔记

原文:JavaScript闭包学习笔记 闭包(closure)是JavaScript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于JavaScript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解JavaScript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. JavaScript语言的特殊之处,就在于函数内部可以直接读取全局变量. 1 var n=999; 2 3 function f1() { 4 alert

javascript面向对象学习笔记(二)——创建对象

javascript面向对象学习笔记(二)--创建对象 工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var person1=createPerson("Chiaki&

Github课程学习笔记

Github课程学习笔记 Github结构 分支——定位于指向一个版本的指针,对应版本的一串不同结构,互不干扰 版本——对应一个父版本以及父版本上的相应变动 变动——不同文件文本的删除.添加 浏览器使用 客户端使用 版本控制commit 修改文本产生变动 变动以行为单位 选中变动加入版本 undo将版本变回变动(没有上传才能用) 上传publish 同步至github之上 回滚rollback一步(一个commit)回到上分支上的一个父版本 抵消revert 抵消这个版本,删除版本上的变动(一个

JavaScript正则表达式学习笔记之一 - 理论基础

自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月??.当时信誓旦旦说的定期写篇博客的计划也就泡汤了??,不过好在最近有空,顺便总结一下这两个月遇到的几个问题.第一个问题就是项目中用到了一些正则才发现之前被自己忽略的正则是时候补一补了.恰逢今天周六??,就把自己学习JavaScript正则表达式的笔记整理成文,写了这篇关于正则表达式理论基础的文章,希望本文能对有需要的同学提供帮助.号外:本文相对基础,大神请忽略??. 一. 基本概念 正则表达式是用于匹配字符串中字符组合的模式. 一种几乎可

Javascript MVC 学习笔记(一) 模型和数据

写在前面 最近在看<MVC的Javascript富应用开发>一书,本来是抱着一口气读完的想法去看的,结果才看了一点就傻眼了:太多不懂的地方了.只好看一点查一点,一点一点往下看吧,进度虽慢但也一定要坚持看完.本学习笔记是对书上所讲解内容的理解和记录. 笔记里的代码大多会按书上摘录下来,因为<MVC的Javascript富应用开发>是结合了JQuery库,所以对于JQuery中不太懂的知识点也会附在代码后面,也算是一些额外的收获. MVC概述 要学习MVC,首先得知道MVC是什么,MV

JavaScript正则表达式-学习笔记(不定期更新)

JavaScript权威指南学习笔记,禁止转载! 8.正则表达式 在常见的字符串检索或替换中,我们需要提供一种模式表示检索或替换的规则. 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 使用: /\d\d\d/.test("123");  //true new RegExp("Bosn").test("Hi,Bosn");  //true 正则基础: . 任何字符(除换行符以外) /-/.test('[email prote

JavaScript对象-学习笔记

JavaScript权威指南学习笔记,禁止转载! 5.对象 对象的属性是无序的,每个属性都有一个字符串key和值value, 数据属性的标签:writable.enumerable.configurable.value 访问器属性的标签:enumerable.configurable.get.set.get表示属性可读,set表示属性可写.属性前面有下划线表示只能通过对象方法get/set访问的属性,也就是访问器属性. (1)创建对象 1)字面量var obj={x:1,y:2}; 2)new:

javascript基础课程学习笔记

学习课程:智能社javascript视频课程 打算好好的把这个视频看完,自知自己不是过目不忘的人所以每一课之后一定要更新笔记当做复习总结加深印象. 第一课:初探JavaScript魅力 - 1 javascript的作用是根据用户操作对网页样式进行修改和响应 分析(布局---属性---事件)--->编写js 最基本事件:onclick,onmouseover,onmouseout…… 直接在HTML中写事件代码会显得混乱所以引入了函数function,函数的定义和调用缺一不可, 网页中的任何标签