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

风满楼。 风满楼。     2022-08-04     257

关键词:

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)


阮一峰:jquery官方基础教程笔记

jQuery是目前使用最广泛的javascript函数库。  据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。  对于网页开发者来说,学会jQuery是必要的。因为它让你了解业界... 查看详情

阮一峰老师的javascript标准参考教程:object对象和object方法(代码片段)

Object对象1.概述1.1生成方法对象(object)是JavaScript语言的核心概念,也是最重要的数据类型。什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。varobj=foo:‘Hello‘,bar:‘World‘;... 查看详情

学习javascript闭包(closure)

...取自阮一峰老师的学习笔记,特此声明闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首... 查看详情

阮一峰老师的javascript标准参考教程:数组array对象和array对象方法(代码片段)

数组1.定义数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。vararr=[‘a‘,‘b‘,‘c‘];上面代码中的a、b、c就构成一个数组,两端的方括号是数组的标志。a是0号位置,b是1号位置... 查看详情

27理解js的继承机制(转载自阮一峰)

Javascript继承机制的设计思想 作者: 阮一峰日期: 2011年6月5日我一直很难理解Javascript语言的继承机制。它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"(prototyp... 查看详情

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

最近正在学习阮一峰老师的es6(第三版)教材,在学到第七章《函数的扩展》中的箭头函数嵌套时,文中提到了一个关于“管道机制”的示例,文中源代码如下://es6(第三版)教材中的管道机制源代码:constpipeline=(...funcs)=>val=... 查看详情

reactnative入门基础知识总结(代码片段)

...actnative。在学习 ReactNative时,需要对前端(HTML,CSS,JavaScript)知识有所了解。对于JS,可以看看阮一峰老师的《ECMAScript6入门》这篇文章。里面涉及很多ES6的新特性。我之前也是看了阮老师的文章做了一些学习笔记ES6学习笔... 查看详情

转载javascript原型继承-学习笔记

...ww.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html笔记如下:一直很难理解Javascript语言的继承机制。它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"( 查看详情

es6阮一峰阅读学习

...MAScript6入门 一、ECMAScript6简介1.什么是ECMAScript6? JavaScript语言的下一代标准。2015年6月发布,正式名称是《ECMAScript2015标准》。思考:编程语言和英语、法语语言差不多吧。其实就是语言的标准、规范之类,和英语语法差... 查看详情

javascript中的闭包(closure)的学习

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面是我在网上通过学习阮一峰老师的笔记,感觉总结很不错,特记录于此。一、变量的作用域要理解闭包,首先必须理解Javascript特殊... 查看详情

阮一峰老师的es6入门:async函数(代码片段)

async函数1.含义ES2017标准引入了async函数,使得异步操作变得更加方便。async函数是什么?一句话,它就是Generator函数的语法糖。前文有一个Generator函数,依次读取两个文件。constfs=require(‘fs‘);constreadFile=function(fileName)returnnewPromis... 查看详情

flex布局(引用阮一峰老师的flex布局-语法篇)(代码片段)

一、Flex布局是什么?Flex是FlexibleBox的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。.boxdisplay:flex;行内元素也可以使用Flex布局。.boxdisplay:inline-flex;Webkit内核的浏览器,必须加上-w... 查看详情

from阮一峰

JavaScript面向对象编程(一):封装  原文链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html Javascript面向对象编程(二):构造函数的继承:  原文链接:http://www.ruanyifeng.com/blog/2010/05/object- 查看详情

分享一个彻底冻结对象的函数——来自阮一峰老师的《ecmascript6入门》

varconstantize=(obj)=>{Object.freeze(obj);Object.keys(obj).forEach((key,i)=>{if(typeofobj[key]===‘object‘){constantize(obj[key]);}});};冻结对象的用处:冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改... 查看详情

阮一峰老师的es6入门:变量的解构赋值(代码片段)

变量的解构赋值数组的解构赋值对象的解构赋值字符串的解构赋值数值和布尔值的解构赋值函数参数的解构赋值圆括号问题用途数组的解构赋值基本用法ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为... 查看详情

es6中promise学习笔记

  参考资料:廖雪峰javascript教程-promise 阮一峰ECMAScript6入门-Promise对象 JavaScriptPromise迷你书(中文版)  查看详情

学习javascript闭包

...者: 阮一峰日期: 2009年8月30日闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,... 查看详情

苹果是真牛逼

...校长。今天跟大家聊一个有意思的话题。前几天我看到阮一峰老师发布的网络日志,是关于软件订阅制的话题。说句题外话,我个人非常喜欢看阮一峰老师的网络日志,也经常看他的博客,每周必看,因为阮... 查看详情