JavaScript(一)声明和变量的使用

变量的声明

  使用var关键字声明变量;

  JavaScript是一种无类型的语言,无类型意味着用户不必显示地声明变量的数据类型,JavaScript将根据需要自动进行数据类型转换。

 1 //基本规则
2 var 变量名;
3
4 //声明一个名firstName的变量
5 var firstName;
6
7 //一条语句声明多个变量,用逗号分割
8 var firstName,middleName,lastName;
9
10 //声明的同时可以赋值
11 var firstName="Mick";
12 var firstName="Mick",middleName="J.",lastName="BL";

  注意:JavaScript变量是区分大小写的。

<html>
<head>
<title>JS区分大小写</title>
<script type="text/javascript">
/**
*区分大小写
*/
function checkJSDiffCase(){
var USERNAME = "大写用户名";
var username = "小写用户名";
alert(USERNAME);
}
</script>
</head>
<body onload="checkJSDiffCase();">
</body>
</html>

JavaScript标识符的命名规范

 

  1. 第一个字符必须为字母、下划线(_)或者美元符号($);
  2. 其他字符可以是字母、下划线(_)、美元符号($)、数字,最好不要有其他字符,虽然可以使用中文,但不推荐这么做;
  3. 变量名不能是关键字或逻辑常量(true、false、null或undefined);
  4. 变量名在其作用范围必须是唯一的。

变量的数据类型

简单数据类型

  简单数据类型是构成数据的基本元素,也被成为原始数据类型。

数据类型 取值范围
Boolean true或false
Number 双精度浮点型
String 表示一个字符序列,一般用双引号或者单引号包围/除了内存限制外,长度没有限制。
Undefined

Undefined数据类型仅有一个值,与类型名相同,即undefined(注意区分大小写)。

定义了一个变量而未为该变量赋值时,该变量的值是undefined。

Null

Null数据类型仅有一个值,与类型名相同,即null(注意区分大小写)。当一个用于引用某个

对象的变量不再使用时,就可以为该变量赋值为null,从而该变量就不再引用那个对象了。








    Boolean会在适当时将值true和false转换成1和0。

 1 <html>
2 <head>
3 <title>JS中Boolean类型的值</title>
4 <script type="text/javascript">
5 /**
6 *会在适当的时候转换成1和0
7 */
8 function checkBooleanValue(){
9 var isLoad = true;
10 if(isLoad == 1){
11 alert("数据已经加载完毕!");
12 }
13 }
14 </script>
15 </head>
16 <body onload="checkBooleanValue();">
17 </body>
18 </html>

    转义字符——反斜杠加上指定的符号。

    

转义序列字符
\b 退格
\f 走纸换页
\n 换行
\r 回车
\t 横向跳格 (Ctrl-I)
\' 单引号
\" 双引号
\\ 反斜杠

 

    浮点值即带有小数点的数字,浮点数字都是十进制的,如果是整数,那么数字可以以十进制、八进制和十六进制来表示。八进制整数用一个前导0指明;十六进制整数用0x指明(x大小写都可以,尽量使用小写x以实现最大的兼容性)——八进制数和十六进制可以是负数,但不能是小数。

    数字常量:Infinity表示无穷大。NaN表示非数字,一个变量定以后未赋值而进行数学运算,就会返回NaN。

复杂数据类型

  Array数据类型

  在JavaScript数组中的元素的数据类型很自由,可以混合各种数据类型,甚至是混合复杂的数据类型,可以嵌套另一个数组。

  Object数据类型

//创建一个名为user的新对象
var user = new Object();
user.name = "用户名称";
user.password = "用户密码";

自定义常量和内建常量

  使用const关键字自定义常量,并给它们赋原义值。

<html>
<head>
<title>JS中Const声明不可改变的变量</title>
<script type="text/javascript">
/**
*会在适当的时候转换成1和0
*/
function checkConst(){
const CON_NUM = 1;
CON_NUM = 2;
alert(CON_NUM);
}


</script>
</head>
<body onload="checkConst();">
</body>
</html>

null常量和undefined常量

 

1 var ob = new Object();
2 ob.message;
3 alert(ob.message == null);//返回null
4
5 var ob = new Object();
6 alert(ob.sex);//返回undefined

在程序中使用变量

  变量值中包含有引号(引号或单引号),就必须使用转义符(\)。如果包含交替包含的话,就无需转义符了。

1 //temp1的值是this is 'js'
2 var temp1 = "this is 'js'!";
3
4 //temp2的值是this is "js"
5 var temp2 = 'this is "js"!';

  如果定义了JavaScript变量,没有赋值,那么运行环境会为其指定一个默认值——undefined。

变量的传值和传址

  简单数据类型(例如Number,String)按值传递。复杂类型按址传递。

  堆(heap)用于为复杂数据类型分配空间,例如数组对象、Object对象。它是在运行时动态分配内存的,因此存取速度较慢。

  栈(stack)中主要存放一些基本类型的变量和对象的引用。其优势是存取速度比堆要快,并且栈内的数据可以共享。但缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

  栈有一个重要的特殊性,就是存在栈中的数据可以共享

易错内容

  在堆和栈的使用问题上,最容易犯错的是String类型:

var str = new String("abc");//堆中

var str = "abc";//栈中

  第一种是用new关键字来新建String对象,对象会存放与堆中,每调用一次就会创建一个新的对象;

  第二种是在栈中,栈中存放值"abc"和对值的引用。

//易错栈堆数据存储

var s1 = "abc";
var s2 = "abc";
alert(s1 == s2); //返回true
alert(s1 === s2); //返回true,地址相同


var s1 = new String("abc");
var s2 = new String("abc");
alert(s1 == s2); //返回false
alert(s1 === s2); //返回false


var s1 = new String("abc");
var s2 = "abc";
alert(s1 == s2); //返回true
alert(s1 === s2); //返回false









posted @ 2012-02-16 15:08  tovep  阅读(731)  评论(0编辑  收藏  举报