第一部分 JavaScript语言核心(三)
第六章 对象
- P123 在ES3中,点运算符后的标识符不能是保留字。如果一个对象的属性名是保留字,name必须使用方括号的形式访问它们,如o["for"]和o["class"]。ES5可以在点运算符后直接使用保留字。
- P123 JS对象都是关联数组:数组元素通过字符串索引而不是数字索引,也称散列、映射或字典。
- P141 JSON.stringify(o);//序列化 JSON.parse(o);//还原 同时使用用于深拷贝
第七章 数组
P146 非负整数索引被当做数组索引,其他被当做对象属性。数组索引仅是对象属性名的一种特殊形式,这意味着JS数组没有"越界"错误的概念。查询不存在属性返回undefiend。
a[-1.23] = true;//创建名为“-1.23”的属性
a["1000"] = 0;//数组的第1001个元素
a[1.000]//等价于a[1]
P147 足够稀疏的数组通常在实现上比稠密的数组更慢、内存利用率更高,在这样的数组中查找元素的时间与常规对象查找时间一样长。为什么?
在数组直接量中省略值时部位稀疏数组。省略值为undefined。可用in操作符监测两者区别:
a1 = [,,,];
a2 = new Array(3);
0 in a1;//true,a1在索引0处有一个元素undefiend,测试为false,省略值不存在 嗯?
0 in a2;//false
P161 类数组对象
第八章 函数
p173 函数定义中使用注释optional来强调形参是可选的。
P174 通过实参对象(不是数组)arguments[num]获得传入的实参,length属性获得实参个数。可变长实参列表:
/*可变长实参列表,返回最大值为例:*/
function max(/*...*/){
var max = Number.NEGATIVE_INFINITY;
//遍历实参,查找并记住最大值
for(var i = 0; i < arguments.length; i++)
if (argument[i] > max) amx = argument[i];
return max;
} var largest = max(1,1000,2,5000,4,5,6); // =>5000
P176 可将对象属性用作实参,为了实参不必按照顺序。
P182 闭包
var scope = "gloval scope"; //全局
function checkscope(){
var scope = "local scope"; //局部
function f(x){ return scoped; }
return f;
}
checkscope()() //返回"local scope"
词法作用域基本规则:JS函数的执行用到了作用域链,这个作用域链是函数定义的时候创建的。嵌套的韩式f(x)定义在这个作用域链里面,其中的变量scope一定是局部变量,不管在何时何地执行f(),这种绑定在其执行时依然有效。
Js词法作用域规则
1、函数允许访问函数外的数据
2、整个代码结构中只有函数可以限定作用域
3、作用域规则首先使用提升规则分析
4、如果当前作用域中有了该变量, 就不考虑外面的同名变量
P187 闭包 循环创建多个闭包,试图将循环代码移入定义这个闭包的函数内,它们共享变量i:
function constfuncs(){
var funcs = [];
for(var i = 0; i < 10; i++){
funcs[i] = function(){return i;}
}
return funcs;
} var funcs = constfuncs();
console.log(funcs[5]()) //返回10而不是5
P193 Function()构造函数
- 创建的是一个匿名函数;
- 允许JS在运行时动态地创建并编译函数;
- 每次调用都会解析函数体,并创建行动函数对象。在循环或多次电泳中执行构造函数,执行效率回受影响;
- 它创建的函数不是使用词法作用域,相反,函数体编译总是在顶层函数(全局)执行。
P196 高阶函数
P197 不完全函数
P199 记忆:牺牲空间换时间,缓存计算结果。
第一部分 JavaScript语言核心(三)的更多相关文章
- 第一部分 JavaScript语言核心(二)
第四章 表达式和运算符 P66 运算符优先级,从上到下: p68 属性访问表达式和调用表达式的优先级比运算符优先级都要高,eg: typeof my.functions[x](y) //typeof在 ...
- 第一部分 JavaScript语言核心(一)
第二章 词法结构 P25 JavaScript是区分大小写的语言:但HTML不区分大小写(XHTML区分大小写,但浏览器具有强大的纠错能力.) 第三章 类型.变量和值 P32 var(variable ...
- 第一部分 JavaScript语言核心(四)
第九章 类和模块 P235 组合VS子类:组合优于继承 P236 类的层次结构和抽象类 第十章 正则达式的模式匹配 定义 JS中正则表达式用RegExp对象表示.直接量定义为包含在一堆斜杠(/)之间的 ...
- 第一章:Javascript语言核心
本节是javascript语言的一个快速预览,也是本书的第一部分快速预览. 读此书之前,感谢淘宝技术团队对此javascript核心的翻译,感谢弗拉纳根写出此书.感谢你们无私的分享,仅以此笔记献给你们 ...
- 使用Firebug或chrome-devToolBar深入学习javascript语言核心
使用Firebug和chrome-devToolBar调试页面样式或脚本是前端开发每天必做之事.这个开发神器到底能给我们带来哪些更神奇的帮助呢?这几天看的一些资料中给了我启发,能不通过Firebug和 ...
- javascript权威指南笔记--javascript语言核心(三)
1.var用来声明一个或多个变量.全局变量是全局对象的属性,它无法通过delete删除. 如果var语句中的变量没有指定初始化表达式,那么这个变量的初始值为undefined. 变量声明语句会被提前到 ...
- JavaScript语言核心之词法结构
编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分割的等规则. 1.1字符集 JavaScript ...
- JavaScript语言核心--词法结构
编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语言之间如何分隔等规则. 1. 字符集 JavaScript程 ...
- javascript权威指南笔记--javascript语言核心(一)
1.javascript的数据类型分为两类:原始类型和对象类型. 原始类型包括字符串.数字.布尔值.null.undefined. 对象是属性的集合,每个对象都由“名/值”对构成.数组和函数是特殊的对 ...
随机推荐
- Mybatis+Spring的整合练习
一.建立数据库.建表 二.新建maven项目 三.添加依赖 <dependencies> <dependency> <groupId>junit</group ...
- 通过CrawlSpider对招聘网站进行整站爬取(拉勾网实战)
爬虫首先要明确自己要爬取的网站以及内容 进入拉勾网的网站然后看看想要爬取什么内容职位,薪资,城市,经验要求学历要求,全职或者兼职职位诱惑,职位描述提取公司的名称 以及 在拉勾网的url等等 然后在na ...
- wdcp升级php5.8到php7.1.12后安装gitlab
.安装依赖包 sudo yum install -y curl policycoreutils-python openssh-server cronie .使用清华大学开源软件镜像源安装 vim /e ...
- NFS实战
博客实践: (1) nfs server导出/data/application/web,在目录中提供wordpress; (2) nfs client挂载nfs server导出的文件系统至/var/ ...
- 八 Hibernate延迟加载&抓取策略(优化)
面试:Hibernate效率很低,如何优化? 缓存怎么弄的,语句怎么优化? 聊聊一级缓存,聊聊抓取策略和延迟加载,聊聊批量抓取 延迟加载: 一般不单独使用,和延迟加载一起使用 延迟加载:lazy(懒加 ...
- 十八 JQuery&Ajax&Json&Xstream
JQuery 1 是什么?有什么用? JavaScript的代码类库 简化代码,提高效率.write less do more 1 JQuery与Servlet数据交互,load方式(少用) 语法:$ ...
- ubuntu 环境下pycharm的 安装与激活教程
1. 基本安装: 1.1 打开Ubuntu的应用市场,并在搜索栏搜索pycharm,结果如下图所示 1.2 选择pro版本进行安装,结果如下图所示: 1.3打开安装后的pycharm,如果出现下图所示 ...
- uni-app小程序组建
(1)新建组建:编辑器右击 新建组建 (2)传值 <template> <view class="myRankingList"> <block v-f ...
- windows下安装多台mysql数据库且实现主从复制
版本如下: windows server 2012 R2 mysql server 5.7.25安装版 / mysql server 5.7.25 解压版 * 这里为啥还要有安装版和解压版勒,主要是因 ...
- 利用 vuex 实现一个公用搜索器
安装 npm i vuex vuex 的使用 先创建好如图所示的文件: 编写 modules 下的 params.js const param = { state: { params: {} }, m ...