编程语言
首页 > 编程语言> > 《Javascript 语言精粹》读书笔记

《Javascript 语言精粹》读书笔记

作者:互联网

《Javascript 语言精粹》读书笔记

语法

标识符

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

数字

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

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

字符串

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

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

语句

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

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

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

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

异常处理:

函数如果没有制定返回表达式,那么返回值是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中一共有四种调用模式:

参数

当函数被调用时,参数会默认放在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