看廖雪峰技术文档关于javascript

JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成   JavaScript的对象用于描述现实世界中的某个对象

访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''括起来:

我们在编写JavaScript代码的时候,属性名尽量使用标准的变量名,这样就可以直接通过object.prop的形式访问一个属性了;

实际上JavaScript对象的所有属性都是字符串,不过属性对应的值可以是任意数据类型;

如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined

 

由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性;

如果我们要检测某一个对象是否拥有某一属性,可以用in操作符;

不过要小心,如果in判断一个属性存在,这个属性不一定是那个对象的,它可能是继承得到的;

要判断一个属性是否是自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法。

 

for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环

请注意for ... inArray的循环得到的是String而不是Number

 

 

for循环在已知循环的初始和结束条件时非常有用  ;while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。

在编写循环代码时,务必小心编写初始条件和判断条件,尤其是边界值

 

如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined

由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。传入的参数比定义的少也没有问题: abs();  此时abs(x)函数的参数x将收到undefined,计算结果为NaN

avaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array

前面我们讲到了JavaScript引擎有一个在行末自动添加分号的机制,这可能让你栽到return语句的一个大坑  写return 后面的别乱换行 否则报错

 

定义一个计算圆面积的函数area_of_circle(),它有两个参数:

  • r: 表示圆的半径;
  • pi: 表示π的值,如果不传,则默认3.14
  • function area_of_circle(r, pi) {}

 

很好的做法:

    r = (r || 0) > 0 ? r : 0;
    pi = pi || 3.14;
    return r ** 2 * pi;


1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值

 

这说明JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。

JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部, 由于JavaScript的这一怪异的“特性”,我们在函数内部定义变量时,请严格遵守“在函数内部首先申明所有变量”这一规则。最常见的做法是用一个var申明函数内部用到的所有变量 不在任何函数内定义的变量就具有全局作用域。实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性: 由于函数定义有两种方式,以变量方式var foo = function () {}定义的函数实际上也是一个全局变量,因此,顶层函数的定义也被视为一个全局变量,并绑定到window对象;我们每次直接调用的alert()函数其实也是window的一个变量

全局变量会绑定到window上,不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现。

减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局变量中。

待续 看到 对象中 对this的使用以及解决办法 重要!!!

posted on 2017-03-07 19:11  小M630  阅读(450)  评论(0)    收藏  举报

导航