js小知识

1.js中全局变量的风险:别人可以创建相同名称的变量,覆盖掉你正在使用的变量

  避免方法:

  A.创建一个包含其他所有变量的全局变量

    var applicationName={}

    当需要创建一个全局变量时,附加到对象上即可:applicationName.myVariable=”abc”

  B.另一种方法是将所有代码封装到一个自动执行的函数中,这样所有声明的变量都在函数内

    (function(){

      var a=”abc”;

    })();

2.变量提升:无论变量是在范围内的哪个地方声明的,javascript引擎会将这个声明提升到该范围的顶部

  function foo(){

    //省略代码

    var a=”abc”;

   }

  实际上会这样执行:

  function foo(){

    var a;

    //省略代码

    a=”abc”;

  }

3.闭包:闭包允许一个函数定义在另一个外部函数的作用域内,即便作用域内的其他东西消失了,它仍可以访问外部函数的变量;闭包是有权限访问另一个函数作用域的变量的函数

4.js中让全局变量少的重要的使用var来声明变量

  function sum(x,y){

    result=x+y;//没有声明result变量,result为隐式全局变量

    return result;

  }

  function foo(){

    var a=b=0;//a为局部变量,b为全局变量

  }

    通过var创建的全局变量(任何函数之外的程序中创建的)是不能被删除的;无var创建的隐式全局变量(无论是否在函数中创建)是可以被删除的

    技术上,隐式全局变量不是真正的全局变量,但他们是全局对象的属性,属性可以通过delete操作符删除,而变量不能

5.js中()为分组操作符,如eval(‘(‘+data+’)’),就是因为括号,会让解析器强制将JSON的花括号解析成表达式而不是代码块

6.js声明变量:var cnblogs=cnblogs||{},这是确保cnblogs存在的时候直接使用,不存在的时候直接赋值为{}

posted @ 2017-03-02 20:49  子衿悠悠  Views(179)  Comments(0Edit  收藏  举报