六、Javascript全局函数
1.encodeURI/ decodeURI功能:将文本字符串编码为一个有效的URI
基本语法:string encodeURI(URIString)
相关函数:decodeURI(解码)
使用要点:该方法不会对ASCII字母和数字进行编码,也不会对这些ASCII标点符号进行编码:-_.!~*`()。对以下在URI中具有特殊含义的ASCII标点符号,encodeURI()函数不会进行转义的:;/?:@&=+$,#;如果URI组件中含有分隔符,如?和#,则应当使用encodeURIComponent()方法分别对各组件进行编码。
2.encodeURIComponent / decodeURIComponent功能:可以把0字符串作为URI组件进行编码
基本语法:string encodeURIComponent (URIString)
相关函数:decodeURIComponent (解码)
使用要点:该方法不会对ASCII字母和数字进行编码,也不会对这些ASCII标点符号进行编码:-_.!~*`()。但可以对以下字符转义:;/?:@&=+$,#。如果文件格式为UTF-8,直接用decodeURIComponent解码会产生乱码。
3.escape / unescape功能:可以对符串作进行编码
基本语法:string escape (String)
相关函数:unescape (解码)
使用要点:该方法不会对ASCII字母和数字进行编码,也不会对这些ASCII标点符号进行编码:-_.!~*`()。其它所有的字符都会转义。
4.eval功能:动态执行JavaScript代码
基本语法:eval(string)
使用要点:不要为eval()函数传递string对象来作为参数。
5.parseFloat / parseInt功能:将字符串解释为一个浮点数
基本语法:parseFloat(string)
使用要点:如果字符串的第一个字符不能被转换为数字,将返回NaN。注意与C#的ParseInt、ParseDouble是有区别的。
例:
var iNum1 = parseInt("12345red"); //返回 12345
var iNum1 = parseInt("0xA"); //返回 10
var iNum1 = parseInt("56.9"); //返回 56
var iNum1 = parseInt("red"); //返回 NaN
parseInt()可以指定转换的基数(2,8,10,16进制等)将指定进制数据转成10进制数据。
var iNum1 = parseInt("10", 2); //返回 2
var iNum2 = parseInt("10", 8); //返回 8
var iNum3 = parseInt("10", 10); //返回 10
6.运算符(1)typeof
typeof运算符有一个参数,即要检查的变量或值。
例:
var sTemp = "test string";
alert (typeof sTemp); //输出 "string"
alert (typeof 86); //输出 "number"
对变量或值调用 typeof 运算符将返回下列值之一:
●undefined - 如果变量是 Undefined 类型的
●boolean - 如果变量是 Boolean 类型的
●number - 如果变量是 Number 类型的
●string - 如果变量是 String 类型的
●object - 如果变量是一种引用类型或 Null 类型的
当声明的变量未初始化时,该变量的默认值是 undefined。
(2)instanceof 运算符
用于识别正在处理的对象的类型。
例:
var oStringObject = new String("hello world");
alert(oStringObject instanceof String); //输出 "true"
(3) delete
delete 运算符删除对以前定义的对象属性或方法的引用。例如:
var o = new Object;
o.name = "David";
alert(o.name); //输出 "David"
delete o.name;
alert(o.name); //输出 "undefined"
delete 运算符不能删除开发者未定义的属性和方法。
(4) void 运算符
避免表达式返回值。void 运算符对表达式求值,并返回 undefined。在希望求表达式的值,但又不希望脚本的剩余部分看见这个结果时,该运算符最有用。
例:<a href="javascript:void(window.open('about:blank'))">Click me</a>
(5)in运算符
测试对象中是否存在该属性。
result = property in object
参数
result:必选项。任意变量。
property:必选项。相当于字符串表达式的一个表达式。
object:必选项。任意对象。
in 操作检查对象中是否有名为 property 的属性。也可以检查对象的原型,以便知道该属性是否为原型链的一部分。
例:
Dept = function() {
this.DeptID = "";
this.DeptName = "";
}
var dept = new Dept();
if ("DeptID" in dept) {
alert("有DeptID属性");
}
//循环对象属性及属性值
for (var prop in dept) {
alert(prop + "="+dept[prop]);
}
(6) ===绝对等于
数值及类型都相同
如果x===5 为 true;x==="5" 为 false
(7) !==绝对不等于
数值及类型都不相同
(8) 按位运算符
按位运算符对操作数进行32位整数的0和1运算。它在比较两个值之前,先将它们转换成32位整数。
&(按位与)两个操作数的每个对应位都是1时结果为1
|(按位或) 两个操作数中任一个对应位是1时结果为1
^(按位异或)两个操作数中任一个对应位是1但不全是时结果为1,即两个对应位 中必须只有一个是1结果为1,便于记忆小贴士:相异的话取或运算
~(按位非)将操作数按位反转
<<(左移)如a<<b 表示交a左移b位,右边补零
>>(右移)如a>>b 表示交a右移b位,丢弃移动位
>>>(首位0填充右移)如a>>>b 表示交a右移b位,丢弃移动位,并左边补零
按位逻辑运算符的工作方式:
操作数将转化为32位整数并由0或1表示;
第一个操作数与第二个操作数之间按对应位操作;
运算符按位运算,结果按位配对。
按位移位运算符的工作方式:
它包括两个运算对象:第一个是被移位的量,第二个指定第一个对象被移动的位的数目。移位运算符将操作数转换为32位整数,并返回同左边类型相同的结果,请看下表:
运算符 描述 实例
<<(左移)
运算符按指定的数目按位左移第一个操作数,左移多余的位被丢弃,右边补零
9<<2 结果为 36,因为 1001 左移 2 位将变为 100100,十进制为 36
>>(带符号位右移)
运算符按指定的数目按位左移第一个操作数,多余位被丢弃,最左边的位移到左边
9>> 2 结果为 2,因为 1001 右移 2 位变为 10,十进制数为 2。同样的,-9>>2 结果为 -3,因为符号位被保留了
>>>(零填充右移)
运算符按指定的数目按位左移第一个操作数,多余位被丢弃,从左边补入 0
19>>>2 结果为 4,因为 10011 右移 2 位为 100,十进制数为 4
7.with语句为语句设定默认对象。在语句体内未指明对象的方法默认从with指定的对象中查找,没有找到则向外部查找。With语句是运行缓慢的代码段,尤其是在已设置了属性值时。最好不要是使用它。
with (object)
statements
with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10)
y = Math.tan(14 * Math.E)
当使用 with 语句时,代码变得更短且更易读:
with (Math){
x = cos(3 * PI) + sin (LN10)
y = tan(14 * E)
}
8.有标签的语句label:statement
例如:
Start:var iCount=10;
标签语句可以被后来的break语句或continue语句引用。
例:continue Start;