随笔分类 -  读书笔记

摘要:js函数会根据上下文改变其含义。 function double(x){return x*2;} 这是一个函数声明,也可以是一个命名函数表达式(named function expression),取决于它出现的地方。 声明一个函数,并绑定一个当前作用域的变量。 同一段函数代码也可以作为一个表达式。 阅读全文
posted @ 2016-05-23 09:37 脚后跟着猫 阅读(491) 评论(0) 推荐(0)
摘要:注意闭包存储的是其外部变量的引用而不是值。使用IIEF来创建局部作用域注意点:代码块不能包含任何跳出块的break和continue语句。如果代码块引用了this或特别的arguments变量,会得到错误的含义。 阅读全文
posted @ 2016-05-21 09:55 脚后跟着猫 阅读(429) 评论(0) 推荐(0)
摘要: js支持词法作用域,即除了极少的例外,对变量的引用会被绑定到声明变量最近的作用域中。 js不支持块级作用域,即变量定义的作用域并不是离其最近的封闭语句或代码块,而是包含它们的函数。 不了解这个会产生一些微妙的bug。 这里的for循环里声明了一个局部变量player,但由于js中变量是函数级作用域, 阅读全文
posted @ 2016-05-20 08:57 脚后跟着猫 阅读(389) 评论(5) 推荐(1)
摘要: 理解闭包三个基本的事实 第一个事实:js允许你引用在当前函数以外定义的变量。 第二个事实:即使外部函数已经返回,当前函数仍然可以引用在外部函数所定义的变量。 第三个事实:闭包可以更新外部变量的值。 阅读全文
posted @ 2016-05-19 14:03 脚后跟着猫 阅读(1137) 评论(6) 推荐(1)
摘要:with块中的每个外部变量的引用都隐式地假设在with对象(以及它的任何原型对象)中没有同名的属性。而在程序的其他地方创建或修改with对象或其原型对象不一定会遵循这样的假设。js引擎当然也不会读取局部代码来获取你使用了哪些局部变量。 变量作用域和对象命名空间之间的冲突使得with代码块异常脆弱。 阅读全文
posted @ 2016-05-18 18:18 脚后跟着猫 阅读(632) 评论(0) 推荐(0)
摘要:如果忘记将变量声明为局部变量,该变量将会隐式地转变为全局变量,尽管该程序没有使用var声明temp变量,执行不会出错,而且temp会被添加到全局使用域中,变成一个全局变量。故意创建全局变量是不好的风格,意外创建是一种灾难。 阅读全文
posted @ 2016-05-18 10:07 脚后跟着猫 阅读(302) 评论(0) 推荐(0)
摘要:初学者容易使用全局变量的原因 创建全局变量毫不费力,不需要任何形式的声明(只要在非函数里用var 你就可以得到一个全局变量) 写得代码简单,不涉及到大的项目或配合(写hello world是不会有什么问题的) 使用全局变量的不利之处 污染共享的公共命名空间 导致意外的命名冲突(比如你的代码别人引用了 阅读全文
posted @ 2016-05-17 09:10 脚后跟着猫 阅读(1176) 评论(1) 推荐(1)
摘要:在这里整理一下,每条对应的提示 第1条:了解使用的js版本 第2条:理解JavaScript的浮点数 第3条:当心隐式的强制转换 第4条:原始类型优于封闭对象 第5条:避免对混合类型使用==运算符 第6条:了解分号插入的局限 第7条:视字符串为16位的代码单元序列 阅读全文
posted @ 2016-05-12 19:05 脚后跟着猫 阅读(594) 评论(0) 推荐(0)
摘要:Unicode编码,基础:它为世界上所有的文字系统的每个字符单位分配一个唯一的整数,该整数介于0~1114111之间,在Unicode术语中称为代码点(code point)。 和其它字符编码几乎没有任何不同(例如ASCII)。 不同在于ASCII将每个索引映射为唯一的二进制表示,但Unicode允 阅读全文
posted @ 2016-05-12 18:53 脚后跟着猫 阅读(940) 评论(0) 推荐(2)
摘要:分号可以省略 js可以在语句结束不强制加分号。(建议还是添加,不添加分号往往会出现不易发现的BUG) function Point(x,y){ this.x=x||0; this.y=y||0; } Point.prototype.isOrigin=function(){ return this.x 阅读全文
posted @ 2016-05-10 19:40 脚后跟着猫 阅读(682) 评论(0) 推荐(4)
摘要:“1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的。为什么呢?请看《[Effective JavaScript笔记]第3条:当心隐式的强制转换》 因为这个会在比较之前对两个值都进行隐式转换。字符串“1.0e0 阅读全文
posted @ 2016-05-09 16:43 脚后跟着猫 阅读(514) 评论(0) 推荐(0)
摘要:js有5种原始值类型:布尔值、数字、字符串、null和undefined。 用typeof检测一下: typeof true; //"boolean" typeof 2; //"number" typeof “s”;//"string" typeof null;//"object":ECMAScri 阅读全文
posted @ 2016-05-09 15:34 脚后跟着猫 阅读(459) 评论(0) 推荐(0)
摘要:js对类型错误出奇的宽容 3+true; //4 3*””; //0 3+[]; //3 3+[3]; //33 以上表达式在许多语言早就变红了。而js不但不报错还给你个结果。 极少情况会产生即时错误,非函数对象或试图选择null的属性。 “hello”(1);//error:not a funct 阅读全文
posted @ 2016-05-05 19:35 脚后跟着猫 阅读(616) 评论(0) 推荐(0)
摘要:JavaScript数值型类型只有数字 js只有一种数值型数据类型,不管是整数还是浮点数,js都把归为数字。 typeof 17; // “number” typeof 98.6; // “number” typeof –2.1; // “number” js中的所有数字都是双精度浮点数。是由IEE 阅读全文
posted @ 2016-05-04 14:11 脚后跟着猫 阅读(617) 评论(2) 推荐(0)
摘要:1997年 正式成为国际标准,官方名称为ECMAScript。 1999年 定稿第3版ECMAScript标准(简称ES3),最广泛的js版本。 2009年 发布第5版即ES5,引入了一些新特性,标准化了一些被支持了但没规范的特性。目前还未得到广泛支持,书中会特别说明一些条款和建议是否是特定于ES5 阅读全文
posted @ 2016-05-04 09:46 脚后跟着猫 阅读(988) 评论(0) 推荐(1)

返回
顶部