3.1 Number
8进制数不是标准的,应该避免使用。
??
3.2 String
Number --> String
var abc = 12; undefined abc.toString(); "12" abc.toString(16); "c" String(abc); "12" abc + ""; "12" var efg = 123456.789; undefined efg.toFixed(0); "123457" efg.toFixed(2); "123456.79" efg.toExponential(1); "1.2e+5" efg.toExponential(3); "1.235e+5" efg.toPrecision(4); "1.235e+5" efg.toPrecision(7); "123456.8"
?
String --> Number
var str = "123A"; undefined Number(str); NaN parseInt(str, 16); 4666 var str1 = "123.1"; undefined str1 - 0; 123.1 Number(str1); 123.1
?
3.3 Boolan
?
Boolean --> Number? true --> 1? false --> 0
Boolean --> String???? true --> "true" false --> "false"
?
Number --> Boolean? NaN, 0 --> false? others--> true
String --> Boolean??? "" --> false others --> true
object --> Boolean?? null --> false others --> true
?
3.4 Function
?
function squre(x) {return x * x;}
?
var squre = function(x) {return x * x;}
?
var plus= Function("x, y", "return x +y;")
?
function squre(x) { return x * x} undefined var abc = squre(10); undefined abc; 100 var plus = function(x,y){return x + y;} undefined var plusRst = plus(10, -9); undefined plusRst; 1 var plusRst = Function{"x,y", "return x+y;"}; SyntaxError: Parse error var plusRst = Function{"x", "return -x;"}; SyntaxError: Parse error var plusRst = Function("x,y", "return x + y;"); undefined plusRst(10,-8); 2
?
3.5 Object
var point = new Object(); point.x = 10; point.y = 20; var rectangle = { upperLeft: { x: 2, y: 2 }, lowerRight: { x: 4, y: 4} }; var rectangle = { "upperLeft": { x: 2, y: 2 }, "lowerRight": { x: 4, y: 4} };
?
Object --> String toString()
Object --> Number valueOf()
?????????????????????????????? toString() --> Number
?
3.6 Array
var arr = new Array(); undefined arr[0] = 1.2; 1.2 arr[1] = "javascript"; "javascript" arr[2] = true; true arr[3] = {x:1, y:3};; Object arr; [1.2, "javascript", true, Object] var arr2 = new Array(1.2, "javascript", true, {x:1, y:3}); undefined arr2; [1.2, "javascript", true, Object] var arr3 = new Array(10); undefined arr3; [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined] arr3.length; 10 var arr4 = [1.2, "javascript", true, {x:1, y:3}]; undefined arr4; [1.2, "javascript", true, Object] var matrix = [[1,2,3], [4,5,6], [7,8,9]]; undefined matrix; [[1, 2, 3], [4, 5, 6], [7, 8, 9]] var arr5 = [1,,,,5]; undefined arr5; [1, undefined, undefined, undefined, 5]
?
3.7 null
??? null --> 0, "null", false
?
3.8 undefined
null == undefined; true null === undefined; false
?undefined -> NaN, "undefined", false
?
3.9?Date?
var now = new Date(); undefined "Today is: " + now.toLocaleString(); "Today is: Thursday, April 16, 2009 10:41:58"
?
3.12 Wrapper Object
var otrue = Object(true); undefined otrue; true typeof(otrue); "object"
?
3.14 Object To Primitive
做+或者比较操作的时候,Object会先调用valueOf,转换成数字然后比较。如果不能转换成数字,就会转换成String进行比较。
var ofalse = new Boolean(false); undefined if (ofalse) a = 10; else a =11; 10 var arr1 = []; undefined arr - 0; NaN arr1 - 0; 0 var arr2 = [1]; undefined arr2 - 0; 1 var arr3 = [1,2]; undefined arr3 - 0; NaN var str = "3"; undefined arr2 < str; true "2" < "3"; true "2" < "3"; true "A" < "a"; true var str2 = "1"; undefined arr2 < str2; false
?
3.15?Reference or Value
?
数字,bool类型都是value的,object都是reference的。string是不可改变的,传得是reference, == 比较的是value。