- 聲明變量
- 通過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表示空值,表示什麼都沒有,相當於一個佔位符。
null和undefined的區別就是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>