Results 16 comments of 1da

# 附录A awful parts 1. 对global variables的依赖 why? 当程序较大的时候,global variables就会变得很难管理。为什么?当变量名称相同的时候,就会发生冲突啊。 solution: ??? 2. 没有block scope why? 这就需要我们在每个函数的开头全部声明所要用到的变量。本来我们所要的在哪里用到variable,就在哪里开始declare variable才对的,这样的话,我们更能容易control。 solution: ??? 3. 自动插入分号 why? 它会不合时宜地插入semicolon,例如return后面的expression的开头部分没有跟return在同一行上 solution: 对于semicolon的纷争,我不想参加。我觉得,这是一个个人问题。 4. 其他不想陈述,因为我现在没需求。 --- #...

# 第3章 对象 1. Literal(字面量), 花括号括起来的"名/值“对,话说以前我不理解这个什么意思。literal是JSON的inspiration's source。 2. Object是通过引用来传递的,而不是pure copy。 ``` javascript var a = { }, b = { }; // a和b引用的都是不同的object var c = a; // a和c引用的是the same...

# 第4章 - 函数 1. 函数可以像其他任何类型的**值**被使用。 也就是说,函数可以保存在变量里,对象里,数组里。可以作为参数,可以被return。 2. 关于_this_。之前一直没搞懂this。现在看来,在not strict mode下, **this的值depends on调用模式** 2.1 方法调用: this的值等于该方法所在的对象。 2.2 函数调用: window 2.3 constructor调用:新建的那个object 2.4 apply等调用:this为apply的第一个parameter --- 1. 接下来,说说closure。 闭包是一个函数(不一定为anonymous function),一个**可以调用另一个函数参数和变量**的函数。其实,搞懂了scope,闭包是很好理解的。 当闭包的外部函数调用结束后,他的scope就没了。然后闭包被调用,但是此时的闭包仍然可以使用其外部函数的parameters or...

# 第6章 - Array数组 1. 先给出一个**array literal** ``` javascript var colors = [ ]; ``` 我们很容易知道,数组的**length**可以是空的,但是我们可以自由地操控他。 1. 怎样**操控**了,我们可以用许多method。例如,splice。 2. [ ]里可以放任何类型的data,例如object, array, primitive type。为什么呢?数组的本质就是对象。 3. 既然array是对象,那么它一定有**methods**吧,并且,他和普通的object有什么difference呢? array和普通的object的不同之处在于,array的method都是继承于Array的,所以有很多useful的methods,后者则是Object;并且,前者有一个property: method。 4. 既然他们那么相似,很**容易confused**啊,我们该怎么恰当地choose...

# 第9章 - 代码风格 由于我一开始看的书就是: 和,因此代码风格方面的问题不大,养成了一个**良好的habit**。这也是为什么一开始就要看好书的reason之一吧。 1. **缩进**。我个人比较喜欢2个空格。因此我把vim的tab设置为2个space。我觉得4个空格的话,代码整体看起来有点松散。当然,这是个人的审美角度啦。 2. **spacebar空格**。function和他后面的()没有空格。但是,for, switch, if这些后面我喜欢用空格。这样代码看起来没有太紧凑。另外,运算操作符**大多时候**都要space。 3. **{}的位置**。我之前是很喜欢把{放在next line的,但是书上是K&R style,即是**把{把在一行的结尾**。后面渐渐喜欢上了,并且可以防止return自动添加分号的error。现在我已经很讨厌我之前那样了。 4. **{}的使用**。if, for后面都要用大括号啦,个人是觉得没那么容易出错,而且看起来有结构性。 5. **变量的declaration**。在function的开始,就该定义好所有的variables and function吧,因为这样不会出现hoisting。 6. **使用global variable**。因此当程序规模变大的时候,是很难maintain。 7. **多用行注释吧**, 这看情况吧。

# 第8章 - 方法 1. **push(item) & pop()**: 这样可以使数组表现得像stack一样,last in first out。 2. **push(item) & shift()**: 使数组表现得像队列一样,first in first out。 3. **reverse()**: 顾名思义,就是把数组reverse,:-) 4. **sort(comparefn)**: sort method可以接受一个compare function。如果是升序的话,compare是这样写的。降序的话,把1和-1exchange。 ``` javascript...