一,全局变量和局部变量的比较
<script type="text/javascript"> <!-- var msg = '全局变量'; function show() { msg = '局部变量'; //修改全局变量的值 } show(); alert(msg); //此时的值为‘局部变量’ //--> </script> <script type="text/javascript"> <!-- var msg = '全局变量'; function show() { var msg; msg = '局部变量'; //只修改局部变量的值 } show(); alert(msg); //此时的值为‘全局变量’ //--> </script>
二,javascript中参数个数可变的函数
在函数内部使用arguments对象来访问调用程序传递的所有参数,而在函数的声明中函数参数列表为空即可
eg:
<script type="text/javascript"> <!-- function textparams() { var params = ''; //在函数内部使用arguments对象来访问调用程序传递的所有参数 for(var i=0;i<arguments.length;i++) { params = params + '' + arguments[i]; } textparams('abc',123); textparams(123,456,'abc'); } // --> </script>
三,创建动态函数(在c/c++中利用函数指针来实现)
var varName = new Function(argument1,...,lastargument);
说明:
所有的参数都必须是字符串类型的,最后的一个参数必须是这个动态函数的功能程序代码。
eg:
<script type="text/javascript"> <!-- var square = new Function('x','y','var sum,sum=x*x+y*y;return sum;'); alert(square(2,3)); // --> </script>
动态函数有什么用?
可以在程序执行过程中,动态变换函数的函数代码;
四,javascript的系统函数(可以直接调用)
1,encodeURI方法
返回对一个URI字符串编码中的结果,本质是UTF-8编码
eg:
var urlStr = encodeURI('http://fanli.qq.com/index.html?a=ddd&msg=中国');
alert(urlStr);
2, decodeURI方法
对URI编码进行解码陈最初始的字符串并返回
3,parseInt方法
将一个字符串按指定的进制转换成一个整数
parseInt(numString, [radix])。如果没有指定第二个参数,则前缀为'0x'的字符串被视为十六进制,前缀为'0'的字符串被视为八进制
(这点要十分注意,tenfy在这里栽过跟头),所有其他的字符串都被视为十进制。热含有非数字的字符串,则只取前面数字部分进制进行转换。
eg:
parseInt('123abc',10); //结果为123
4,parseFloat方法:若转换失败,则返回NaN
5,isNaN方法 ---拥有检测parseInt和parseFloat方法的返回值是否是NaN (Not a Number)
注意:判断一个数是否是NaN不能这样,if(xx == NaN),只能用该方法进行判断,如:
alert(NaN == NaN); //非常奇怪,这里的结果是false
alert(isNaN(NaN)); //true
6,escape方法
返回对一个字符串进行编码后的结果字符串。所有的空格,标点,重音符号以及任何其他人ASCII字符都用%xx编码替换。其中xx等于表示该字符的Unicode字符集的编码的十六进制,字符值大约255的字符均用%uxxxx格式进行表示。
7,unescape方法
将一个escape方法编码的结果字符串解码陈原始字符串并返回。
8,eval方法
将其中的参数字符串作为一个javascript表示式进行执行并返回结果。