标签:
var message ="hi";
message =100;// 有效,但不推荐
function test(){
var message ="hi";// 局部变量
}
test();
alert(message);// Uncaught ReferenceError: message is not defined(…)
如果像下面这样省略var操作符,那么可以创建一个全局变量:
function test(){
message ="hi";// 全局变量
}
test();
alert(message);// "hi"
这样只要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。
虽然省略了var操作符可以定义全局变量,但这也不是我们推荐的做法。因为在局部作用域中定义的全局变量很难维护,而且如果有意地忽略了var操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致ReferenceError错误。
从技术角度讲,函数在ECMAScript中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象是有必要的。
var message;
alert(message ==undefined);// ture
这个例子与下面的例子是等价的:
var message =undefined;
alert(message ==undefined);// true
这个例子使用undefined值显示初始化了变量message。但我们没有必要这么做,因为未经初始化的值默认就会取得undefined。
对未初始化的变量执行typeof操作符会返回undefined,而对未声明的变量执行typeof操作符同样也会返回undefined。
var message;// 这个变量声明后默认取得undefined值
// 下面这个变量并没有声明
// var age
alert(typeof message);// "undefined"
alert(typeof age);// "undefined"
var car =null;
alert(typeof car);// "object"
如果定义的变量准备将来用于保存对象,那么最好将变量初始化为null而不是其他值。
实际上,undefined值是派生自null值的,因此ECMA-262规定它们的相等性测试要返回true:
alert(null==undefined);// true
数据类型 | 转换为true值 | 转换为false值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
undefined | N/A(不适应) | undefined |
alert(NaN==NaN);// false
isNaN()函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串“10”或Boolena值,而任何不能被转换成数值的值都会导致这个函数返回true:
alert(isNaN(NaN));// true
alert(isNaN(10));// false
alert(isNaN("10"));// false (被转换为数值10)
alert(isNaN("blue"));// true (不能转换为数值)
alert(isNaN(true));// false (被转换为数值1)
有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。
Number()函数的转换规则如下:
var num1 =Number("hello World!");//NaN
var num2 =Number("");// 0
var num3 =Number("00000011");// 11
var num4 =Number(true);// 1
parseInt()函数在转换字符串时,更多的看是否符合数值模式。
var num1 = parseInt("1234blue");// 1234
var num2 = parseInt("");// NaN
var num3 = parseInt("0xA");// 10
var num4 = parseInt("22.5");//22
var num5 = parseInt("070");// 70 (ECMAScript3中转换为56)
var num6 = parseInt("70");//70
var num7 = parseInt("0xf");//15
转换时可以为这个函数提供第二个参数:转换时使用的基数(即多少进制)。如果知道要解析的值是十六进制格式的字符串,那么指定基数16作为第二个参数,可以保证得到正确的结果。例如:
var num = parseInt("0xAF",16);// 175
实际上,如果指定了16作为第二个参数,字符串可以不带前面的"0x",如下:
var num1 = parseInt("AF",16);// 175
var num2 = parseInt("AF");// NaN
指定基数会影响到转换的输出结果。例如:
var num1 = parseInt("10",2);// 2
var num2 = parseInt("10",8);// 8
var num3 = parseInt("10",10);// 10
var num4 = parseInt("10",16);// 16
为了避免错误的解析,建议无论在什么情况下都要指明确定基数。
parseFloat()也是从第一个字符开始解析,一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。字符串中的一个小数点是有效的,而第二个小数点就是无效的,例如"22.34.5"将会被转换成"22.34"。
parseFloat()函数始终都会忽略前导零,十六进制格式的字符串会始终会被转换成0。由于parseFloat()只解析十进制值,因此它没有第二个参数指定基数的用法。
如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后都是零),parseFloat()会返回整数。
var num1 = parseFloat("1234blue");// 1234 (整数)
var num2 = parseFloat("0xA");// 0
var num3 = parseFloat("22.5");// 22.5
var num4 = parseFloat("22.34.5");// 22.34
var num5 = parseFloat("0908.5");// 908.5
var num6 = parseFloat("3.125e7");// 31250000
\n | 换行 |
---|---|
\t | 制表 |
\b | 空格 |
\r | 回车 |
\f | 换页 |
\ | 斜杠 |
\‘ | 单引号,在用单引号表示的字符串中使用。如:‘He said,\‘hey.\‘‘ |
\" | 双引号,在用双引号表示的字符串中使用。如:"He said,\"hey.\"" |
\x nn | 以十六进制代码nn表示的一个字符(其中n为0~F)。如:\x41表示"A" |
\u nnnn | 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。如\u03a3表示希腊字符∑ |
ECMAScript中的字符串是不可变的,就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。
把一个值转换为一个字符串有两种方法,第一种是使用toString()方法。
var age =11;
var ageAsString = age.toString();// "11"
var found =true;
var foundAsString = found.toString();// "true"
数值、布尔值、对象和字符串值都有toString()方法。但null和undefined值没有这个方法。
给toString()传入数值的基数,可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格式表示的字符串。例如:
var num =10;
alert(num.toString());// "10"
alert(num.toString(2));// "1010"
alert(num.toString(8));// "12"
alert(num.toString(10));// "10"
alert(num.toString(16));// "a"
再不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能将任何类型的值转换为字符串,它遵循的规则为:
var valu1 =10;
var valu2 =true;
var valu3 =null;
var valu4;
alert(String(valu1));// "10"
alert(String(valu2));// "true"
alert(String(valu3));// "null"
alert(String(valu4));// "undefined"
把某个值转换为字符串,可以使用加号操作符把它与一个字符串("")加在一起。
var o = new Object();
标签:
原文地址:http://www.cnblogs.com/echovic/p/5932950.html