javascript
小胡说
这个作者很懒,什么都没留下…
展开
-
effective javascript(一)——认识javascript浮点数
一、javascript中所有数字的类型都为number类型typeof 10: numbertypeof 15.8: numbertypeof -30.2: number二、javascript中所有数字都是双精度浮点数,大多数的算术运算可以使用整数、实数或者两者进行计算0.5 * 1.7 = 0.85-20 + 35 = 1518 - 3.65 = 14.352.8 / 4 = 0.7原创 2017-04-12 23:35:31 · 242 阅读 · 0 评论 -
effective javascript(四)——避免对于混合类型使用==运算符
先来看一个简单的例子:"1.0e0" == {valueOf: function () { return true;}}结果为:true这两个看似毫无关系的对象,使用”==”符号的结果却是true。js的隐式强制转换看似比较方便,也埋下了许多隐患。左边的等式被转换为1,右边的匿名函数结果为true,同样被转换为1,所有结果为true。 所有在作相等运算符的时候,尽量使用“===”符号,避免强制转原创 2017-04-17 23:16:43 · 303 阅读 · 0 评论 -
effective javascript(二)——隐式强制转换
一、隐式强制转化示例js对类型错误相当宽容,一些类型会被强制转化成其他类型。进行-、*、/、和%等算术计算前,都会将参数转换为数字。+即代表了数字相加,也代表了字符串相连,+对字符串相连的优先级更高。5 + true = 67 + 2 = 9"hello" + "world" = "hello world""4" + 6 = "46"4 + "6" = "46"2 + 3 + "4" =原创 2017-04-13 23:50:49 · 295 阅读 · 0 评论 -
effective javascript(五)——变量作用域(尽量少用全局变量,尽量使用局部变量)
javascript中创建全局变量十分简单,并不需要特别任何形式的声明就可以被整个程序的所有代码访问。 定义全局变量最大的问题是污染了命名空间,有可能会导致意外的冲突。 同时全局变量不利于代码模块化,容易导致独立组件、之间的耦合。 当然全局变量是必要的,定义的模块也需要暴露一个全局变量供给其他代码调用。一、全局变量命名冲突var i,n,sum; //全局变量function average原创 2017-04-19 00:08:55 · 789 阅读 · 0 评论 -
effective javascript(三)——原始类型优于封装对象
javascript除了object外一共有5个原始类型:布尔值、数字、字符串、null和undefined。(其中null类型进行typeOf操作结果为“object”)字符串原始类型和封装对象异同在某些地方,String对象的行为和封装的字符串值类似,如字符串连接:var str = new String("learn");str + " javascript" = "learn javasc原创 2017-04-16 20:22:51 · 326 阅读 · 0 评论 -
effective javascript(六)——掌握闭包
一、什么是闭包的?MDN的解释:闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。换句话说,这些函数可以“记忆”它被创建时候的环境。 直接看定义也比较难以理解,还是先看一个例子:function funA() { var name = "hello"; function hello() { window.console.log(name);原创 2017-04-19 23:18:10 · 211 阅读 · 0 评论 -
effective javascript(七)——命名函数表达式
function car(){return 'Benz';}这是一个简单的的函数声明,我们也可以将它作为一个函数表达式。例如:var funA = function car(){return 'Benz';}根据ECMAScript规范,此语句将该函数绑定到变量funA,而不是变量car。当然给函数表达式命名是没有必要的,我们可以改为下面的匿名函数表达式的形式:var funA = function原创 2017-04-20 23:21:22 · 470 阅读 · 0 评论 -
effective javascript(八)——eval函数
javascript中的eval函数功能十分强大,错误使用eval函数的方法之一就是允许它干扰作用域。下面来看个例子:function demo(a) { eval("var b = a"); return b;}demo("hello")// hello放在eval函数中声明的变量b和直接放在demo函数体中略有不同。只有当eval函数被调用时,eval函数中的var声明语句才原创 2017-04-24 23:07:42 · 260 阅读 · 0 评论