Javascript学习笔记(二)Javascript核心之数据类型与值
1、数字:
JavaScript不同于其他语言的一个特点是它不区分整型数值和浮点型数值,所有的数字都由浮点型表示。它采用IEEE754标准定义的64位浮点格式表示数字。
整型直接量
八进制和十六进制的直接量(并非所有的JavaScript都支持八进制数值)
浮点型直接量
数字的使用(除运算符外还采用了大量的算术函数,这些函数都被保存在Math对象中,作为Math对象的属性使用)
特殊的数值常量列表如下
Constant |
Meaning |
---|---|
Infinity |
Special value to represent infinity |
NaN |
Special not-a-number value |
Number.MAX_VALUE |
Largest representable number |
Number.MIN_VALUE |
Smallest (closest to zero) representable number |
Number.NaN |
Special not-a-number value |
Number.POSITIVE_INFINITY |
Special value to represent infinity |
Number.NEGATIVE_INFINITY |
Special value to represent negative infinity |
JavaScript中的字符串包含在单引号或双引号中,在JavaScript中没有char字符类型,而是用长度为1的字符串来表示字符。
字符串直接量
字符串直接量中的转义序列(字符串本身包含了单引号或双引号的情况,就要用到转义字符,如“\'”或“\"”)
JavaScript的转义序列
Sequence |
Character represented |
---|---|
\0 |
The NUL character (\u0000). |
\b |
Backspace (\u0008). |
\t |
Horizontal tab (\u0009). |
\n |
Newline (\u000A). |
\v |
Vertical tab (\u000B). |
\f |
Form feed (\u000C). |
\r |
Carriage return (\u000D). |
\" |
Double quote (\u0022). |
\' |
Apostrophe or single quote (\u0027). |
\\ |
Backslash (\u005C). |
\xXX |
The Latin-1 character specified by the two hexadecimal digits XX. |
\uXXXX |
The Unicode character specified by the four hexadecimal digits XXXX. |
\XXX |
The Latin-1 character specified by the octal digits XXX, between 1 and 377. Not supported by ECMAScript v3; do not use this escape sequence. |
字符串的使用(连接字符串+,字符串长度length属性从0开始索引)
数字转换为字符串
数字对象的toString()方法,默认按十进制转换,可以指定参数转化为二进制,八进制,十六进制等.如:
binary_string = n.toString(2); //所求值为 "10001"
octal_string = "0" + n.toString(8); // 所求值为 "021"
hex_string = "0x" + n.toString(16); // 所求值为 "0x11"
数字对象的toFixed()方法,toExponential()方法,toPrecision()方法的使用请看例子:
var n = 123456.789;
n.toFixed(0); // "123457"
n.toFixed(2); // "123456.79"
n.toExponential(1); // "1.2e+5"
n.toExponential(3); // "1.235e+5"
n.toPrecision(4); // "1.235e+5"
n.toPrecision(7); // "123456.8"
字符串转换为数字:parseInt(),parseFloat方法的使用请参考以下例子,比较直观.
parseInt("3 blind mice"); // Returns 3
parseFloat("3.14 meters"); // Returns 3.14
parseInt("12.34"); // Returns 12
parseInt("0xFF"); // Returns 255
parseInt("ff", 16); // Returns 255 (15*16 + 15)
parseInt("zz", 36); // Returns 1295 (35*36 + 35)
parseInt("077", 8); // Returns 63 (7*8 + 7)
parseInt("077", 10); // Returns 77 (7*10 + 7)
parseInt("eleven"); // Returns NaN
parseFloat("$72.47"); // Returns NaN
4、函数:
函数(function)是一个可执行的JavaScript代码段,包括用户自定义函数和JavaScript预定义函数。
JavaScript中的函数是一个真正的数据类型,这就意味着函数可以被存储在变量、数组和对象中,而且还可以作为参数传递个其它函数。
除了用函数定义如:function square(x) { return x*x; }
还可以用函数直接量来定义如:var square = function(x) { return x*x; }
另外一种定义函数的方法很少用,即把参数列表和函数体作为字符串传递给构造函数.如var square = new Function("x", "return x*x;");
5、对象:
对象就是数据的集合。要引用一个对象的属性就必须引用这个对象。如访问image对象的width和height属性:iamge["width"];image ["height"]
ECMAScript v3定义了对象直接量的语法,使你能够创建对象并定义它的属性。对象直接量由一个由花括号中的列表构成,这个列表的元素是用冒号分隔的属性/值对,元素之间用逗号隔开。
如定义一个point对象:var point={x:2.3,y=1.3}
对象直接量也可以嵌套,如:var rectangle = {upperleft:{x:2,y:2},lowerright:{x:4,y:4}}
对象直接量中的属性值不必是常量,也可以是任意的JavaScript表达式。如:
var square = { "upperLeft": { x:point.x, y:point.y }, 'lowerRight': { x:(point.x + side), y:(point.y+side) }};
在JavaScript中,数组可 以存放任何一种JavaScript数据类型,包括其它数组、对象或函数的引用。由于JavaScript是一种无类型语言,因此数组元素不必具有相同的 数据类型。
数组的创建方法如下:
var a = new Array();
a[0] = 1.2;
a[1] = "JavaScript";
a[2] = true;
a[3] = {x:1,y:3};
var a = new Array(1.2,"JavaScript",true,{x:1,y:3});
var a = new Array(10);
上面数组的创建可以使用如下代码实现:
var a = [1.2,"JavaScript",true,{x:1,y:3}];
数组直接量可以被嵌套如:var matrix = [[1,2,3], [4,5,6], [7,8,9]];
而且数组直接量中还可以存放未定义的元素:
var sparseArray = [1,,,,5];
7、null:表示“无值”。常常被看作对象类型的一个特殊值,即代表“无对象”的值。
8、undefined:使用未声明的变量或已声明未赋值的变量,又或使用不存在的对象属性时返回的就是这个值。虽然和null值不同,但是==运算符却将两者看作相等。如果必须区分两者,可以用==或typeof运算符。9、日期对象Date
用Date( )来创建如:var xmas = new Date(2006, 11, 25);(注意其表示12月,月份从0开始计算)
使用Date对象的方法,可以得到并设置日期和时间的值,还可以将Date对象转换成一个字符串如:
xmas.setFullYear(xmas.getFullYear( ) + 1); //把日期改为下一个圣诞节
var weekday = xmas.getDay( );//设置2006年的圣诞节是星期二
document.write("Today is: " + now.toLocaleString( )); //当前的日期/时间
10、正则表达式对象 由RegExp对象来表示,可以使用RegExp()构造函数来创建它。
11、错误对象Error 每个Error 对象具有一个message属性。预定义的错误对象类型有:Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError.
12、类型转换概述
数据类型自动转换表
Value |
Context in which value is used |
|||
---|---|---|---|---|
String |
Number |
Boolean |
Object |
|
Undefined value |
"undefined" |
NaN |
false |
Error |
null |
"null" |
0 |
false |
Error |
Nonempty string |
As is |
Numeric value of string or NaN |
TRue |
String object |
Empty string |
As is |
0 |
false |
String object |
0 |
"0" |
As is |
false |
Number object |
NaN |
"NaN" |
As is |
false |
Number object |
Infinity |
"Infinity" |
As is |
true |
Number object |
Negative infinity |
"-Infinity" |
As is |
TRue |
Number object |
Any other number |
String value of number |
As is |
true |
Number object |
true |
"true" |
1 |
As is |
Boolean object |
false |
"false" |
0 |
As is |
Boolean object |
Object |
toString( ) |
valueOf( ), toString( ), or NaN |
true |
As is |
Javascript不仅支持数字,字符串,布尔值,还支持Number,String,Boolean类,这些类是基本数据类型的包装,所以包装不仅具有和基本类型一样的值,还定义了用来运算数据的属性和方法。
如:var s = "These are the times that try people's souls.";
var last_word = s.substring(s.lastIndexOf(" ")+1, s.length);
14、对象到基本类型的转换