JavaScript demo2_數據類型與變量

  • 聲明變量
    • 通過var關鍵字聲明變量
    • 可以聲明變量的同時給變量賦值
    • 可以一次聲明一個變量也可以一次聲明多個變量
    • 如果只聲明變量未對其賦值,默認值爲undefined
    • 如果變量重名產生覆蓋
    • 注意
      • 變量嚴格區分大小寫
      • 變量名稱最好遵循駝峯標記法或者下劃線法
      • 變量名稱最好含義明確
  • 變量在內存中的存儲與釋放
    • 收集方式
    • 收集內容
    • 回收算法

test1.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<script type="text/javascript">
		// 聲明變量
		var a;
		var b;
		var c,d;
		// alert(a); // undefined無定義數據類型
		// 聲明變量的同時並且賦值
		var test = 'this is a test';
		var test1 = 12;
		var test2 = 1.2;
		var test3 = true;
		var test4 = false;
		alert(test);
		// 聲明多個變量賦值相同的初始值
		var a = b = c = d = e = 1;
		alert(a); // 1
		// 變量重名會產生覆蓋
		a = 33;
		alert(a); // 33
		// 變量名稱聲明嚴格區分大小寫
		var username = 'bing';
		var USERNAME = 'yuan';
		alert(username); // bing
		alert(USERNAME); // yuan
		// 變量名稱最好含義明確,以字母或者下劃線開始,跟上數字字母下劃線
		var age = 12;
		var test5 = 'hello';
		// var 12a = 'bb';
		// alert(12a);
		var _test = 'hello';
		alert(_test); // hello
		// 駝峯標記法
		var firstName = 'bing'; // 小駝峯
		var FirstName = 'bing'; // 大駝峯
		var first_name = 'bing'; // 下劃線法
	</script>
</head>
<body>

</body>
</html>

  • 基本數據類型:
    • 數值型:十進制、十六進制(0x開頭)、八進制(0開頭)、特殊值(Infinity無窮大、NaN)
    • 字符串型:轉義符
      • \n 回車換行
      • \r 換行
      • \t 水平製表符
      • \" "
      • \' '
    • 布爾類型 true/false
  • 引用數據類型:
    • 對象(object)
    • 數組(array)
    • 函數(function)
  • 特殊數據類型:
    • 無定義數據類型undefined。用來表示不存在的值或者尚未賦值的變量。
    • 空值null。null表示空值,表示什麼都沒有,相當於一個佔位符。

nullundefined的區別就是undefined表示變量未被賦值,而null表示變量被賦予了一個空值

test2.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		// 十進制
		var a = 12;
		a = -23;
		a = 12.3;
		a = .23e4; // 0.23*10*10*10*10 = 2300
		a = 2e3; // 2000
		a = 3E2; // 300
		a = 3E-2; // 0.03
		// 十六進制
		a = 0xABCDEF;
		a = 0X0;
		a = 0X1a2b3c4d;
		// 八進制
		a = 00;
		a = 0123;
		a = 01234234;
		// 正無窮大 Infinity
		a = 1.79e309; // Infinity
		a = -1.79e309; // -Infinity
		// NaN:Not a Number
		a=0/0; //NaN
		// 通過isNaN()來檢測是否是NaN值
		// alert(isNaN(a)); // true
		// NaN不能和自身比較
		// alert(NaN===NaN); // false

		// 字符串類型
		var str = 'this is a test'; // this is a test
		var str1 = 'hello world'; // hello world
		// var str2 = aaa;
		// var username = "king's"; // king's
		// var username = 'king\'s'; // king's
		// var str2 = 'a\nbcd';
		// var str2 = 'a\nb\rc\td"e\\f';
		// alert(str2);

		// 布爾類型
		var married = true; // true
		// married = TRUE;
		// alert(true); // true

		// 聲明變量爲賦值
		var test6; // undefined
		// 賦值爲不存在的屬性值
		var test7 = String.NotExists; // undefined

		// null值
		var test8 = null; // null
		alert(test8); // null
		alert(null == undefined); // true
		alert(null === undefined); // false
	</script>
</body>
</html>

test3.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<script type="text/javascript">
		/*
			if(exp){
				exp爲true的代碼段;
			}eles{
				exp爲false的代碼段;
			}
		*/

		// 其它類型轉換成布爾類型假的有
		var a; // undefined -> false
		// typeof得到變量的類型
		// alert(typeof a); // undefined
		a = null; // null -> false
		// 0 0.0 NaN
		a = 0; // 假
		a = 0.0; // 假
		a = 0 / 0; // NaN
		a = NaN; // 假
		// alert(typeof NaN); // number
		a = ''; // 空字符串 -> false
		a = '0'; // 真
		a = ' '; // 真
		// if(a){
		// 	alert('真');
		// }else{
		// 	alert('假'); 
		// }

		// 其它類型轉換成數值型
		var b = undefined; // undefined -> NaN
		b = null; // null -> 0
		b = true; // true -> 1
		b = false; // false -> 0
		b = '12'; // 121
		// alert(b + 1); 

		var c = '12'; // '12' -> 12 2*12=24
		c = '3bing'; // '3bing' -> NaN
		c = 'true'; // NaN
		// alert(2*c); 

		c = '33'; // string
		// alert(typeof c); // string
		c = c*1; // number
		// alert(typeof c); // number
	</script>
</head>
<body>
	<h1>隱式轉換的例子</h1>
	<script type="text/javascript">
		// 其它類型轉換成字符串型
		document.write(undefined); // 'undefined'
		document.write('<br/>');
		document.write(null); // 'null'
		document.write('<br/>');
		document.write(NaN); // 'NaN'
		document.write('<br/>');
		document.write(123); // '123'
		document.write('<br/>');
		document.write(true); // 'true'
		document.write('<br/>');
		document.write(false); // 'false'
		document.write('<br/>');
		alert(1+"1"); // 11 拼接字符串
		alert('2' + 12); // 212
	</script>
</body>
</html>

test4.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<script type="text/javascript">
		// 其他類型轉換成布爾類型false的有
		var test = Boolean(0); // false
		test = Boolean(0.0); // false
		test = Boolean(-0); // false
		test = Boolean(-0.0); // false
		test = Boolean(-0.1);  // true
		test = Boolean(NaN); // false
		test = Boolean(undefined); // false
		test = Boolean(''); // false
		test = Boolean('0'); // true
		// 其他類型轉換成字符串型
		test = String(1234); // 1234
		test = String(23.34); // 23.34
		test = String("this is a test"); // this is a test
		test = String(true); // true
		test = String(false); // false
		test = String(NaN); // NaN
		test = String(undefined); // undefined
		test = String(null); // null
		// 其他類型轉換成數值型
		test = Number(12); // 12
		test = Number(232.3); // 232.3
		test = Number(232.0); // 232
		test = Number(true); // 1
		test = Number(false); // 0
		test = Number(undefined); // NaN
		test = Number(NaN); // NaN
		test = Number(null); // 0
		test = Number("3bing"); // NaN
		test = Number("3.14"); // 3.14
		// 通過parseInt()進行轉換成整型
		test = parseInt('123'); // 123
		test = parseInt('234.2'); // 234
		test = parseInt('0xabcdef'); // 11259375
		test = parseInt('01234'); // 668
		test = parseInt('101',2); // 5
		test = parseInt('12',16); // 18
		test = parseInt('3king'); // 3
		test = parseInt('true'); // NaN
		test = parseInt(true); // NaN
		test = parseInt('24 e6 8 10'); // 24
		// 通過parseFloat()轉換成浮點型
		test = parseFloat('123.34abc'); // 123.34
		test = parseFloat('123'); // 123
		test = parseFloat('abc'); // NaN
		test = parseFloat(' 2e3a'); // 2000
		alert(test);
	</script>
</head>
<body>
	<h1>強制轉換的例子</h1>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章