ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《Javascript 语言精粹》读书笔记

2019-09-22 09:35:24  阅读:180  来源: 互联网

标签:精粹 JavaScript obj 函数 读书笔记 Javascript var undefined name


《Javascript 语言精粹》读书笔记

语法

标识符

JavaScript不允许使用保留字命名变量或参数。

数字

JavaScript只有一个数字类型,在内部被表示为64位的浮点数。指数使用e来表示,100 和 le2 是相同的数字。

NaN是一个数值,表示一个不能产生正常结果的运算结果,NaN不等于任何值,包括自己。

字符串

Javascript 中所有的字符都是16位的。

字符串不可变,‘c’ + ‘a’ + ‘t’ === ‘cat’.

语句

当 var 语句被用在函数内部时,它定义是这个函数的私有变量。

JavaScript中的代码快不会创建新的作用域,因此变量应该被定义在函数的头部,而不是在代码块中。

下面列出的值都被当作假:

  • false
  • null
  • undefined
  • 空字符串‘’
  • 数字0
  • 数字NaN

其他所有的值都当作真,包括true、字符串“false”。

异常处理:

  • 如果throw语句在一个try代码块中,那么控制流会跳转到catch从句中
  • 如果throw语句在函数中,则该函数调用被放弃,控制流跳转到调用该函数的try语句的catch从句中。

函数如果没有制定返回表达式,那么返回值是undefined。

function fn() {
}
var a = fn();
console.log(a) 	// undefined

对象

对于丑陋的事物,爱会闭目无视

JavaScript的简单数据类型包括数字、字符串、布尔值、null和undefined,其他所有的值都是对象。

JavaScript里的对象是无类型的,它对新属性的名字和属性的值没有限制。对象可以包含其他对象,所以可以很容易的使用树状或者图形结果来表示。

检索

检索有两种方式:

obj['key']; // key
obj.key;	// key

如果检索一个不存在的成员属性的值,将返回undefined,可以使用||运算符来填充默认值:

var name = obj.name || 'none'

从undefined的成员属性中取值将会导致TypeError异常,可以通过&&运算符来避免错误。

obj.name	// undefined
obj.name.firstname	// throw "TypeError"
obj.name && obj.name.firstname		// undefined

引用

对象通过引用来传递,不会被复制。

var obj = {}

var person = obj;
person.name = 'phillzou';
console.log(obj.name)	// phillzou

函数

所有的过失在未犯以前,都已定下应处的惩罚

函数对象

每个函数在创建时会附加两个隐藏属性:函数的上下文和实现函数行为的代码。

因为函数是对象,所以它们可以像任何其他值一样被使用。

调用

JavaScript中一共有四种调用模式:

  • 方法调用模式
  • 函数调用模式
  • 构造器调用模式
  • apply调用模式

参数

当函数被调用时,参数会默认放在arguments数组中。

由于语言的一个设计错误,arguments并不是一个真正的数组,它只是一个“类似数组”的对象。arguments拥有一个length属性,但它没有任何数组方法。

返回

一个函数总是会返回一个值,如果没有指定返回值,则返回undefined。

如果函数调用时在前面加上了new前缀,且返回值不是一个对象,则返回this。

扩充类型的功能

通过给 Function.prototype 增加一个method方法,下次给对象增加方法是久不变键入prototype这几个字符。

Function.prototype.method = function (name, func) {
  this.prototype[name] = func;
  return this;
};

例如,下面给Number.prototype增加一个integer方法来改善它,会根据数字的正负来判断是使用Math.celling还是Math.floor。


Number.method('integer', function() {
  return Math[this < 0 ? 'ceil' : 'floor'](this);
});

console.log((3/2).integer());   //1

柯里化

柯里化允许我们吧函数与传递给他的参数相结合,产生一个新的函数。

把多参数函数转换为一系列单参数并进行调用的技术。

var add1 = add.curry(1);

document.writeln(add1(6)) // 7

标签:精粹,JavaScript,obj,函数,读书笔记,Javascript,var,undefined,name
来源: https://blog.csdn.net/qq_37954086/article/details/101146170

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有