- 声明变量
- 通过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>