JavaScript函数(内建函数),变量详解

版权声明:杨杨杨~~的版权 https://blog.csdn.net/weixin_38316697/article/details/82794365

JavaScript函数(内建函数),变量详解

                                                   目录

1

声明函数

7.4

内部(私有)函数

2

调用函数

7.5

返回函数的函数

3

形参,实参

7.6

函数的重写

4

内建变量

8

JavaScript变量详解

5

内建函数

8.1

作用域链

6

变量的作用域

9

(function(){…}());结构

函数的含义与多种用法

10

 setter 和getter

7.1

函数也是数据,可以把一个函数赋给一个变量

11

JavaScript迭代器的写法

7.2

回调函数

7.3

即时函数

1、声明函数 

关键词,  function  

函数名   sum

参数      a,b

function  sum(a,b){

var c = a +b;

return c;

}


2、调用函数

>var result = sum(1,2);

>result;

3

若函数所需的调用参数在调用的时候忘了传递相关的参数值,

JavaScript会自动设定为undefined,最后会返回NaN

例如:>sum(1);

          NaN


3、形参、实参

形参:声明函数时所用的那些参数

实参:调用函数时所传递的那些参数


4、内建变量

arguments变量:返回函数所接受的所有参数

例子:

>function arg(){

  return arguments;

  }

>arg(1,2,3,4,5);

 [1,2,3,4,5]


5、内建函数

【目录:

   parseInt(),

   parseFloat() ,

   isNaN(),

   isFinite(),

   encodeURI(),

   decodeURI(),

   encodeURIComponent(),

   decodeURIComponent(),

   eval(),

   alert()

(1)parseInt()       将收到的任何输入值转换成整型类型输出

  可选的第二参数:radix,

  parseInt('',radix)  

【radix 用处,设定函数所期望的数字类型:十进制、十六进制,二进制】

  不选第二参数radix时

  >parseInt('377');

  377

  >parseInt('0377');     //首参数以0开头时,默认为八进制

  255

  >parseInt('0x377');   //首参数以0x开头时,默认为十六进制

  887

(2)parseFloat()

跟parseInt功能差不多,区别:仅支持十进制,参数还可以接受指数形式的数据

例子:>parseFloat('123e-2');

          1.23

(3)isNaN()

用处:确定某个输入值是否为可以参与算数运算的数字,返回的是布尔值boolean

例如:>isNaN(parseInt('abc123'));

           true

          说明abc123是不可以参与算数运算的数字

因为   >isNaN(NaN);

          true

 

(4)isFinite();

用处:用来检查输入值是否是一个既非Infinity也非NaN的数字

例如:>isFinite(Infinity);

           false

           >isFinite(12);

           true

(5)encodeURI();

用处:转义URL ,返回一个可用的URL

(6)encodeURIComponent();

用处:转义URL ,返回的是URL的一部分

(7)decodeURI();

用处:对应encodeURI()的反编码

(8)decodeURIComponent();

用处:对应encodeURIComponent()的反编码

(9)eval()

用处:将其输入的字符串当做JavaScript代码来执行

例子:>eval('var ll = 2;');

           >ll;

            2

(10)alert()

作用:显示一个带文本的消息对话框


6、变量的作用域(JavaScript)

JavaScript中变量的定义不是以代码块作为作用域的,而是以函数作为作用域。

如果声明变量时没有使用var语句,那么它就会被默认为全局变量。

例子:

        >function f(){local =2}

        >local;

      ReferenceError: local is not defined

        >f();

      undefined

        >local;

         2


7、函数的含义与多种用法

7.1、函数也是数据,可以把一个函数赋给一个变量

var f = function(a){                 //function(a) 为匿名函数

return a;

}

 这种定义方式叫做函数标识记法

 举例:

>var yzy = function(){ return 1  }

>typeof yzy

function     //证明函数也是数据

函数(特殊的数据的性质):

1、包含的是代码

2、是可执行的

7.2、回调函数

例子:>function invokeAdd(a,b){                                                //声明函数invokeAdd()

            return a()+b();

            }         

            >function one(){                                                               //声明函数one

            return 1;

            }

          >function two(){                                                               //声明函数two

            return 2;

            }

          >invokeAdd(one,two);                                                      //one与two就是invokeAddd的回调函数

           3

          >invokeAdd(function(){return 1; } , function(){return 2;});   //匿名回调函数

           3

7.3、即时函数

   含义:函数定义后立即调用

   例子:function(){

             alert('哈哈!!!');

             }

 7.4、内部(私有)函数

   用函数标识记法写个例子

   例如: var  outer = function (param){

                var inner = function(theinput){

                return theinput*2;

                };

                return inner(param;)

              }

  注意:若返回的函数不带括号,结果只是一个函数引用,不会产生函数的调用

 7.5、返回函数的函数

    例子:function a(){

              alert('AAA');

              return function(){             //返回匿名函数

              alter('BBB');

              }

              }

7.6、函数的重写

例子:

     >function a(){

        alert("A!!!");

        a = function(){     |     重写函数a

           alert("B!!!");      |

        }                           |

     }


 8、JavaScript变量详解

     1、全局变量:定义在所有函数之外的变量

     2、局部变量:定义在函数之内的变量

     注意:若声明变量的时候,没有使用var,该变量会被默认为全局变量

     问题:怎样将函数中的局部变量变为全局变量

              首先,在一个函数中定义一个不用var声明的变量,

              其次, 调用该函数,创建该变量并赋值,

              最后,该变量变为全局变量

     例子:>function f(){ local = 1;}

               >f();

                undefind

               >local;

                1

 8.1、作用域链

     含义:处于作用域链中的变量除了可以访问自己本身的作用域与全局变量,也可以访问父级的作用域

     例子:

             >var yzy_local = 1;

             >function outer(){          //父级

               var outer_local = 2;

               function inner(){          //子级     (子级可以访问父级的作用域,形成作用域链)

               var inner_local = 3;

               return yzy_local + outer_local+inner_local;

               } 

             }

             >outer();

              6

       注意:若返回的函数不带括号,结果只是一个函数引用,不会产生函数的调用


9、(function(){…}());结构

     作用:立即调用的函数表达式


10、getter 与 setter

    【作用】:赋值之前给变量一定的保护

    【要求】:将这两个函数放在同一函数中,目的:享受同一作用域

     例子:

     var getValue,setValue;

     (function(){

      var secret = 0;

     getValue = function(){

      return secret;

     }

     setValue = function(v){

     if(typeof v === "number"){          //判断是否number类型的值

        secret  = v; 

     }

     }

     }() );


11、JavaScript迭代器的写法

实例:

(1)首先

     function setup(x){

       var i= 0;

       return function(){

          return x[i++];

       };

     }

 (2)之后用一组数组来调用setup()函数,就可以创建出我们要用的next()函数。

    var next  =  setup(['a','b','c']);

 (3)迭代器函数

   >next();

   "a"

   >next();

   "b"

   >next();

   "c"

     

    

 

猜你喜欢

转载自blog.csdn.net/weixin_38316697/article/details/82794365
今日推荐