数据类型
JavaScript数据类型分为基本类型和引用类型。
基本类型有三种:数值型(number)、字符串型(string)、布尔型(boolean)。
引用类型主要指对象类型(object)。
两种特殊数据类型:未定义类型(undefined)和空类型(null)。
JavaScript属于弱类型程序语言(轻量级解释型脚本),又称为动态类型程序语言,因而一个变量不必事先声明类型,而是在使用或赋值时再确定其类型。
var i=3;
var s=“abcdefg”;
常量
常量是程序中不能改动的数据,通常又称为字面常量。JavaScript的常量分别属于不同的数据类型。
(1)(number)数值型常量
数字(number)是最基本的数据类型。JavaScript和其他程序设计语言(如C和Java)的不同之处在于它并不区别整型数值和浮点型数值。在JavaScript中,所有的数字都是由浮点型表示的。
当一个数字直接出现在JavaScript程序中时,我们称它为数值直接量(常量)(numericliteral)。
整数(常量)可以用十进制****、十六进制或八进制表示,
浮点数(常量)可以用小数或科学计数法(指数形式)表示。
所谓十六进制数据,是以“0X”和“0x”开头,其后跟随十六进制数字串的直接量。例:
<script>
var a=27;//十进制
alert(a);
var b=027;//八进制
alert(b);
var c=0x27;//十六进制
alert(c);
var d=3.12e11;//浮点类型表示,等于3.12×10^11,e可以大写
alert(d);
</script>
e.特殊的数值常量
Infinity(很少用):Infinity表示无穷大。当一个数值或数值表达式的值超出可表示的最大值时,将被作为Infinity
;当一个数值或数值表达式的值超出可表示的最小值时,将被作为−Infinity
。其他数值与Infinity
进行运算,结果仍为Infinity
。
在JavaScript中0可以作为分母,不认为错误。
<script>
var a=6/0;
alert(a);
</script>
e.特殊的数值常量
NaN:NaN表示“Not a Number”,即不是一个数字。当计算0/0、或对Infinity求正弦值或计算Infinity与−Infinity相加的结果时,都将得到NaN。通过调用 isNaN方法 可以确定一个值是否为NaN。
判断某个值是否是 NaN,不能使用 == 或 === 运算符,而是用 isNaN()方法 。
<script>
var tmp = 0/0;
if(isNaN(tmp)){
alert("NaN");
}</script>
(2)(string)字符串常量
使用单引号(‘’)或双引号(“”)括起来的一个或多个字符序列,字符串中可以包括汉字,可以有转义字符。
转义字符(字符串中可以加入转义字符)
以反斜杠开头的不可显示的特殊字符通常称为控制字符,也被称为转义字符。
JS关于转义字符方面的规定和C语言有点像。
<script>
document.write("在字符串中,既可以加入单引号\',也可以加入双引号\"。");
</script>
<script>
alert("欢迎学习\njavaScript!");
</script>
由于document是HTML元素,所以不执行\n,使用</br>
<script>
document.write(“<h1>欢迎学习\njavaScript!</h1>");
</script>
3)(boolean)布尔常量
布尔数据类型只有两个值,这两个合法的值分别由直接量“true
”和“false
”表示。一个布尔值代表的是一个“真值”,它说明了某个事物是真还是假。
主要用于条件的判断if语句、循环中。
在JavaScript中可以利用typeof运算符
来查看一个值或变量的类型。小括号可加可不加,它的返回值是个字符串。
<script>
document.write(typeof(123)+"<br />");
document.write(typeof "123"+"<br/>");
document.write(typeof true+"<br/>");
document.write(typeof NaN);
</script>
<script>
var s="aaaa";
var t=123;
var b=true;
document.write(typeof(s)+"<br />");
document.write(typeof t+"<br/>");
document.write(typeof b+"<br/>");
</script>
(4)undefined类型
(未定义类型):只有一个值(undefined)
a.当声明一个变量而未对其赋值,该变量的默认值和类型为undefined
b.当函数没有明确的返回值时,也返回undefined值。
<script>
function a()
{document.write(123456);
}
var b=a();
alert(typeof b);
c.如果对未声明过的变量使用typeof运算符,则结果为undefined
;
d.如果对变量赋一个不存在的属性值,则该变量的类型为undefined
;
<script>
var b=window.color;
document.write(typeof b);
document.write(typeof c);
</script>
(5)null类型(空类型,是一种特殊的object类型数据)
null类型也是只有一个唯一值即null。
null值表示为空对象,用于定义空的或不存在的对象引用。所以对null
执行typeof
的时候会返回object
。
<script>
var a=null;
alert(typeof a);
document.write(a);
</script>
<body>
<h1 id="ss" style="color:#F00">这是h1标题</h1>
<script>
var a=document.getElementById(“ss”); //获得对象后可以动态控制
a.style.color="#0F0";
alert(typeof a);
</script>
</body>
<body>
<script>
function p()
{var a=document.getElementById("ss");
a.style.color="#0F0";
alert(typeof a);
}
</script>
<h1 id="ss" style="color:#F00" onclick="p()">这是h1标题</h1>
</body>
变量
变量的主要作用是存储数据,变量是存放信息的容器。
(1)标识符的命名规则:标识符就是一个名字,用来为变量、函数等命名,标识符的命名规则如下:
① 标识符由字母、数字、下划线(_)或
符
组
成
,
但
不
能
以
数
字
开
头
。
标
识
符
中
不
能
有
空
格
、
(
+
)
、
(
-
)
、
(
,
)
或
其
他
符
号
。
例
如
:
t
e
s
t
1
、
t
e
x
t
2
、
n
a
m
e
、
符组成,但不能以数字开头。标识符中不能有空格、(+)、(-)、(,)或其他符号。 例如:test1、text2、_name、
符组成,但不能以数字开头。标识符中不能有空格、(+)、(-)、(,)或其他符号。例如:test1、text2、name、str等都是合法的标识符,、
a、a b+、name-1等都是非法的标识符。
② 命名标识符时,最好把标识符的意义和其代表的意思对应起来即“见名知意”。可参考以下几种命名方法:
Camel标记法:变量名的第一个字母为小写,后面单词均以大写开头
studentName studentAge
Pacal标记法:变量名的第一个字母为大写,后面单词均以大写开头
StudentName StudentAge
变量
在JavaScript中,变量也可以不作声明,直接赋值。例如:
x = 100;
y = "125";
xy = true;
cost = 19.5;
(3)变量的作用域:JavaScript中变量分为全局变量和局部变量。
定义在所有函数体之外的变量是全局变量,其作用范围是整个网页;
定义在函数体之内用var声明的变量是局部变量,其作用范围是该函数体;
在函数体内直接赋值定义的变量也是全局变量。
变量的作用域:
【例1】编写代码说明全局变量和局部变量的作用域。
<script type = "text/javascript">
var a; // a在函数外声明,是全局变量,作用于整个脚本代码
function send() {
a = "欢迎进入";
var b = “JavaScript”; // b在函数内声明,只作用于该函数体
c = "JS程序设计"; // c在函数内直接赋值,是全局变量
alert(a+b); // 显示"欢迎进入JavaScript"
alert(a+c); // 显示"欢迎进入JS程序设计“
}
send(); // 调用函数send,从而执行send()中的代码
alert(a+c); // 显示"欢迎进入JS程序设计"
alert(a+b); // 出错,因为无法访问局部变量b
</script>
const关键字
用于实现常量的定义。常量的命名遵循标识符的命名规则,习惯上常量名称总是使用大写字母来表示。 例如:
const PI=3.14;
const p=2PIPI;
常量一旦被赋值就不能改变,并且常量在声明时必须为其指定某个值。