JS的系统函数和自定义函数

今天突发奇想,加入一个js函数,在调用的时候,传递的形参和实参不匹配,该会如何呢?

function Test(a,b)

{

alert(a+b);

alert(a+"____"+b);

}

1、实参小于形参的时候

Test();返回的结果第一个是 NaN(不是数字)第二个是undefined_____undefined

Test(1);返回的结果第一个是 NaN(不是数字)第二个是1_____undefined

 解决:形参a和b并不是真正被声明使用,所以是undefined,所以可通过 a?a:1这种方式来设置默认值

function Test(a,b)
{

a=a?a:1;
b=b?b:2;
alert(a+b);
alert(a+"-------"+b) ;

}

Test();返回的结果第一个是 3  第二个是1_____2

2、实参大于形参的时候

 

function Test(a,b)
{

 

a=a?a:1;
b=b?b:2; 
alert(a+b);
alert(a+"-------"+b) ;

 

}

 

Test(1,2,3,4,5,6);返回的结果第一个是 3  第二个是1_____2

另外,js里有一个获得实参的数组,arguments

function Test(a,b)
{
var sum=0;    如果是 var sum;  结果是NaN
for(var i=0;i<arguments.length;i++)
{
sum+=arguments[i];
}
alert(sum);

}
Test(1,8); 结果 9

 

再说个题外话:

function Test()

{

alert(a);

}结果是直接报错了,而

function Test(a)

{

alert(a);

}并不会报错,反而是弹出  undefined,说明 如果变量声明了不赋值,则是undefined,不声明则直接报错。

 

以上是自己的推测并验证了的结果,至于为什么现在还真是说不清楚,下面就说点常用的系统函数吧——global对象的方法,这个Global对象很神奇,从不直接使用,不能new,它在JS引擎初始化的时候就自动创建了,而且它的方法和属性就可以立即使用。

escape(str);加密

unescape(str);解密

 

function Test()
{
var sum="大量时间的发送快乐的机房是";

document.write(escape(sum));  之所以用document.write是因为加密的字符串在弹框里,根本复制不出来解密,所以只能卸载页面里了
alert(unescape("%u5927%u91CF%u65F6%u95F4%u7684%u53D1%u9001%u5FEB%u4E50%u7684%u673A%u623F%u662F"));
}
Test();

 

isNaN(n);如果不是数字返回 true 是数字返回 false

alert(isNaN("a12.4")); true

alert(isNaN("12.4"));  false

alert(isNaN(12.4)); false        说明,isNaN(s)的时候自动执行了一次parseInt()这个功能

parseInt(s);将字符串转成数字,只要整数部分

var t="12.345";
alert(parseInt(t));  12

 

var t="a12.345";
alert(parseInt(t));  NaN

 

var t="1a2a.345a";
alert(parseInt(t));  1

带转换的字符串中只要第一位是非数字的话就返回NaN,直到第一次出现非数字的前面所有的数字作为要转换的字符串,如果期间有小数点则取整数部分。

 

parseFloat(s);同parseInt(s);

 

eval(str);可以将字符串解释成js脚本,执行程序

function Test()
{
var t="var s='abc';alert(s);";
eval(t);
}
Test();  弹出  abc

 

posted on 2017-02-28 23:09  奔游浪子  阅读(192)  评论(0)    收藏  举报

导航