【JavaScript面向对象编程】20151229(函数,也是一种数据类型)

1、一个函数只能有一个返回值,如果我们需要同时返回多个值,可以考虑放进一个数组里,以数组元素的形式返回。

2、【函数参数】 每个函数内部都有一个内建的arguments数组(事实上,arguments是一个类似数组的对象),它能返回函数所接受的所有数组。

function args(){
    return arguments();
}

3、【预定义函数(内建函数)】,可随时调用
1)parseInt(),试图将其收到的任何输入值(通常是字符串)转换成整数类型输出,转换失败返回NaN。第二可选参数radix设定函数所期望数字类型,不指定radix时,若首参数字符串0x开头,默认十六进制;其他不指定情况下默认为十进制。

    2)parseFloat(),将输入值转换为十进制数,支持指数形式的数据。

    3)isNaN(),检测不是数字,再次强调,NaN==NaN返回false

    4)isFinite(),检测既不是infinity也不是NaN的数字

    5)encodeURI(),  返回可用的URL(空格转为%)

    6)decodeURI(), 对应encodeURI()反转

    7)encodeURIComponent() , URL的一部分(空格,冒号,斜杠,等号等均被转义为%)

    8)decodeURIComponent(), 对应encodeURIComponent()反转
    URI(统一资源标识符) URL(统一资源定位符)

    9)eval(),会将输入的字符串作为js代码执行。
        有选择的话,我们应尽量避免使用eval(). 所谓 Eval is evil。因为它 1)比直接执行脚本慢 2)不一定安全

4、alert()函数,并不在ECMA标准中,而是由宿主环境–浏览器提供的。
alert()会阻塞当前浏览器线程,即alert()执行窗口关闭之前,当前所有代码都会暂停执行。尽量不要选择alert()调试。

5、【变量作用域】在JavaScript中,我们不能为变量定义特定的块作用域,但可以定义其所属的函数域。这句话意味着,如果变量是在某个函数中定义的,那么它在该函数以外的地方是不可见的;但是如果该变量是定义在if 或者for这样的代码块中,它在代码块之外是可见的。
1)全局变量,是指声明在所有函数外的变量。
局部变量,在某个函数中声明的变量。
2)声明变量时不使用关键字var,该变量被认为是全局变量;该变量在首次调用时被创建,并被赋予全局作用域。
3)尽量将全局变量的数量降到最低。尽量使用var 关键字声明变量
4)函数域始终优于全局域。
5)无大括号级作用域,只有函数级作用域。并且,每个函数都有自己的词法作用域和作用域链。

6、 函数是一种数据类型。其特别之处在于 1)包含代码 2)可调用

    6-1    【匿名函数】
    6-2    【回调函数】
            1)回调函数可以再不做命名的情况下传递函数(这意味着可以节省全局变量) ;
            2)我们可以将一个函数的调用操作委托给另一个函数(减少代码量)
            3)提升性能
    6-3    【自调函数】适合一次性或者初始化的任务
            最优解
            (function xx( ){
                       函数体;
                })()

            (function xx( ){
                       函数体;
                })(‘XX’)

            或者:function(){}()之前加上运算符,因为解析的缘故 ,function会即时触发,
             eg:
        +function(){alert(1)}()
        -function(){alert(1)}()
        ~function(){alert(1)}()
        ^function(){alert(1)}()
        %function(){alert(1)}()

    6-4    【内部(私有)函数】      
                1)减小命名冲突
                2)私有性
    6-5     【返回函数的函数】
    6-6    【可重写自己的函数】
                    function a(){
                            alert('q");
                            a = a(){
                              alert('g');
                            }
                        }

7、【闭包】

8、【Getter 和Setter】 确保了局部变量的不可直接访问性

        var 变量;
        get访问变量  =function(){
                return 变量;
                    }
        set设置变量 = function (v) {
                变量 = v;
            }

9、【迭代器】

function setup(x){
  var i = 0;
  return function(){
    return x[i++];
  }
}
var next = setup([1,2,3,4,5]);

你可能感兴趣的:(JavaScript)