javascript权威指南笔记

最近每天工作之余看下js的细节部分,时间不是很多,所以看的进度也不会太快,写个博客监督自己每天都看下。

以前不知道的细节或者以前知道但是没注意过的地方都会记录下来,所以适合有一定基础的,不适合零基础新手。

---------------------------------------------------------国庆期间---------------------------------------------------------

js中所有数字都是浮点数,比如5/2不是2,是2.5,0/0为NaN,如果想实现5/2=2可以采用5>>2=2
见未知

js中NaN和任何值都不相等,包括它自己,所以判断x是否为NaN可以用x!==x来判断
见未知

js 字符串,数值和布尔值都是不可变的
如:var s=“hello”
s.toUpperCase();
console.log(s)
输出s为hello而不是HELLO
因为函数返回的是一个新字符串,而本身是不会改变的。
见47页3.7

js类型转换表
见49页上

js中对象永远不相等,即使对象中的所有索引以及属性值都一样也不相等,同样两个单独的数组也是永远不相等
原因:对象为引用类型,对象的比较为引用的比较,当为同一个引用对象时才相同
也就是说
var a ={};
var b=a;
此时a===b为true。 
见47页底部

变量作用域不受{}代码块限制,只受函数声明限制,函数体内声明的变量都被“提前”至函数体顶部,也就是说在函数体内任何地方定义的变量都可以在函数体内任意地方使用,只是有可能未赋值(如果使用在声明之前)
见57页3.10.1

1.声明的全局变量和2.未声明直接赋值产生的全局变量的不同之处。
1.不能用delete删除
2.可以用delete删除
见58页3.10.2
因为用户用var声明的变量不能用delete删除
见89页中上

.访问和[]访问的区别
.访问会直接查找.后的属性值
[]访问会计算括号内的表达式并转为字符串后进行访问
这个特点导致如果属性名称是一个保留字活着包含空格和标点符号,或是一个数字(对数组来说),则必须使用方括号
见63页底部

运算符相关
见66页

js比较运算符,如果比较的两个操作数,有一个为NaN,那么总是返回false
见77页上方

eval()作用
1.定义别名后eval就是全局的,此时可以在函数内使用全局变量的值(即使函数内有同名变量)
见85页代码段
2.未知

function定义
1.var funcname = function(){;}函数定义表达式
2.function funcname(){;}函数声明语句
区别:1.同var声明变量一样,只有变量声明被提前到了作用域顶部,但是没有值
2.整体都被提前
见95页底部

52-54需要细看

else if并不是真正的js语句,只不过是多条if/else 语句连在一起时的一种惯用写法
见98页

使用switch的场景
所有分支都依赖同一个表达式的值时,重复计算多条if语句中的表达式非常浪费
见99页上

switch中case后面的表达式与switch后的表达式的值是用“===”进行判断
见99页中

default可以放在switch内任何地方
见101页上

5.5.4
for/in
不太懂这个object和variable
见104页

标签语句
类似c语言goto,不常用,使用方法不熟悉
见106页

continue语句在不同循环体中不同的表现行为
while 判断开始的循环表达式
do/while 判断结尾的循环表达式
for 先计算自增表达式,再判断循环表达式
for/in 遍历下一个属性名
见108页5.6.3

throw的向上传递
见110页5.6.5下

finally执行问题
只要try语句中有一部分代码执行了,finally就会执行。就算try中使用了return,continue,break也是如此

利用try/finally使while循环模拟for循环(无法完美实现)
见112页下

with语句
将对象添加到作用域链的头部,不建议使用
见113页5.7.1

debugger
设置程序断点,用于程序调试(作为ACMer)
见114页5.7.2

“use strict”
使用严格模式
严格模式区别(前三条非常重要):
1.禁止使用with语句
2.所有变量都要先声明
3.调用的函数(不是方法)中的this为undefined
4.通过call和apply来调用函数时,this就是传入的第一个参数
其余见115页中
--------------------------------------------------------------------------------------------------------------------------- 
看到118页

时间: 2024-09-30 11:33:11

javascript权威指南笔记的相关文章

JavaScript权威指南笔记——第1部分

# <JavaScript权威指南>笔记--第1部分 说明: 印刷版:2012年4月第1版 2016年9月第17次印刷. 本书的风格和<Effective Java>很类似,推荐一下. 该笔记逆序记录的. ----------------------- ------<end>------ | node的helloworld程序: ```js //! program.js // 通过在命令行输入`node program.js`来运行,然后在浏览器中打开网址`127.0.

1.语言概述-JavaScript权威指南笔记

上周三的时候交给老板目前的项目第一个迭代回顾会的总结.原本是以综述性的表述方式写的,交给他之后表示程序员不要长篇大论.总结要分为优点缺点期望等等块,每块列出条目,简明扼要的表达出来.这里也用这种风格.另外要说的是,可能很多地方是摘抄转述和不精确的个人阶段,开始阶段先这样好了,希望看到自己成长. 1.前端开发工程师必备三种技能:描述网页内容之HTML,描述网页样式之CSS,描述网页行为之JavaScript. HTML:Hyper Text Markup Language.超文本标记语言,据说并不

javascript权威指南笔记(第7章 数组)

1.注意: a[-1.23] = true; // This creates a property named "-1.23" a["1000"] = 0; // This the 1001st element of the array a[1.000] // Array index 1. Same as a[1] 2.delete操作符产生稀疏数组 3.设置数组的长度会自动切断或添加undefined 4.javascript不支持真正的多维数组但是可以用数组的数

2.词法结构-JavaScript权威指南笔记

今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASCII的超集,各种语言妥妥支持,克林贡语=.=?当我没说 2.JavaScript是区分大小写的. 这一点给我留下了深刻印象.去年五月份,第一次写JavaScript,document.getElementById()写成了document.getElementByID(),妈蛋整整一个上午硬是get

javascript权威指南笔记(第6章 对象)

1.对象概述 1.对象常见的用法: create .set .Query .delete .test.enumerate 2.对象的属性特性: 可写.可枚举.可配置 3.每个对象的对象特性: 原型.对象的类.对象的可扩展性 4.对象和属性分类: 内置对象.宿主对象.自定义对象.自由属性.继承属性 2.创建对象 1.对象直接量 2.通过new创建对象 3.原型 4.Object.create() 第一个参数:这个对象的原型 第二个参数:可选.对对象的属性进行进一步描述 var o1 = Objec

3.类型、值和变量-JavaScript权威指南笔记

开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度. 1.概论. value:程序的运行是对值的操作. type:能够表示并操作的值,它们的类型称作数据类型.编程语言的基本特性是能支持多种数据类型. variable:变量是某个值的符号名称,通过名称获得对该值的引用. JavaScript的数据类型分为:原始类型-primitive type:对象类型-object type. JavaScript解释器可以自动对内存进

javascript权威指南笔记学习

//返回了一个继承自原型对象p的属性的新对象 function inherit(p){ if (p ==null) throw TypeError(); if (Object.create){ return Object.create(p); } var t=typeof p; if (t!=="object"&&t!=="function") throw TypeError(); function f(){}; f.prototype=p; ret

javascript权威指南笔记(第9章 类和模块)

1.工厂函数 function range(from, to) { var r = inherit(range.methods); r.from = from; r.to = to; return r; }; range.methods = { includes: function (x) { return this.from <= x && x <= this.to; }, foreach: function (f) { for (var x = Math.ceil(this

javascript权威指南——笔记

字符集:Unicode字符集 JS:区分大小写 标识符:指变量.函数.属性名.函数名.函数参数 第一个字符:字母.下划线.$ 其后的字符:字母.下划线.$.数字 默认:驼峰命名 转义字符: \n 换行 \t制表 \b空格 \r回车 \f换页符 \\ \' \" 注释:单行// 多行 /**/ 直接量: number.string.boolean.null./RegExp/img 语句:以分号';'结尾 关键字.保留字: do,while,for,in,continue,break, if,els

javascript权威指南笔记(第10章 正则表达式的模式匹配)

1.非贪婪的重复:如"??" .   "+?"   . "*?"  ."{1,5}?" 例如: 非贪婪匹配 /a+?/去匹配aaa,尽可能的少匹配,只能匹配到第一个a, /a+/去匹配aaa,匹配到了aaa /a+b/去匹配aabb,匹配到aabb 而使用非贪婪匹配/a+?b/,它会匹配尽可能少的a和一个b,但是匹配到了aabb,因为会寻找正则表达式第一个匹配的位置 2.圆括号的作用 1.将单独的项组合成子表达式 2.完整的模