关于JavaScript中函数的一些技巧

时间:2023-02-13 08:18:10

一、关于函数的写法及调用

 

  (1),JavaScript函数定义在一些地方是不同于C++,.NET,JAVA等面向对象语言的,这些语言都有函数重载的概念。如:


关于JavaScript中函数的一些技巧关于JavaScript中函数的一些技巧Code

  上面的函数sum实现的是整数的相加,调用时根据输入参数的不同决定其调用的是哪个函数。

  但是在JavaScript中函数却不能这样写重载函数,这这会引起混乱。如:

关于JavaScript中函数的一些技巧关于JavaScript中函数的一些技巧Code

  按照我们的习惯思维,当show函数中不参入参数时,应该调用的是第一个函数,弹出的警告框应该是“good”,但是运行后我们就会发现警告框的内容是“NaN”,这里系统调用的是最后一个函数,即show(s,w);当调用show('yes')时,它弹出的不是"yes",而是"yesundefined",这里系统调用的也是最后一个函数,即show(s,w);当调用show('yes','no')时,弹出的是"yesno",这里系统调用的还是最后一个函数,即show(s,w);当调用show('yes','no','cancel'),结果同show('yes','no')。说明后面的函数会覆盖前面的同名函数。至于为什么会产生这种结果,请接着往下看下面一段话,你就会明白了。。。。

  由于函数被覆盖了,show函数定义为最后一个函数。。。而在JavaScript中,如果在函数调用时省略了参数(如show(),show('yes')),则省略的参数(s,w和w)会以undefined类型传递。如果在调用时提供了函数声明所不需要的多余参数(如show('yes','no','cancel')),多余的参数('cancel')会被忽略。。。

 

  (2),特殊情况

   

  请看下面函数的运行 结果。

 

关于JavaScript中函数的一些技巧关于JavaScript中函数的一些技巧Code

 

   当我们调用show("伟大的","中华人民","*")时,会弹出“伟大的*”。按照上面的思路,里面的参数应该是被JavaScript解释器忽略掉的,但是这里不会,因为我们在写处理函数的时候已经做了参数处理,arguments为传入函数的参数数组。

 

二、函数声明的放置位置

 

   函数有两个个存放位置

  

  1,直接放置在js文件的最顶层  2,放置在一个对象中

 

  (1),直接放置在js文件中非常之简单也非常常见,调用也十分清晰。

 

// 声明
function  show()
{
      alert(
" 成功 " );
}

// 调用
show();

   (2),在对象中写函数其实也非常常见。由于对象分三种(1,内置对象 2,JSON对象 3,自定义对象),所以这里也分三种情况讨论。

 

  (a) ,内置对象中的函数

 

// 定义
String.prototype.trim  =   function () 
{
    
return   this .replace( / (^\s*)|(\s*$) / g,  "" );
}

// 调用
var  str  =   "   我的左右边都有空格   " ;
alert(str.trim());

 

  (b)JSON对象中的函数

 

// 定义JSON对象obj中的show方法
var  obj  =  {
      show:
function (){
            alert(
" 成功 " );
      }
}

// 调用
obj.show();

 

   (c),自定义对象中的函数,这是JavaScript开发者应用函数最为常见的地方

 

// 定义自定义对象obj中的show函数
function  obj()
{
      
this .show  =   function ()
      {
            alert(
" 成功 " );
      }
}

// 调用
var  aaa  =   new  obj();
aaa.show();