<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="01 js数据类型.js" type="text/javascript"></script>
<script type="text/javascript">
//alert('这里是在url里运行JS,所有可以设置url的地方都能这么做');
</script>
</head>
<body>
<a href="javascript:alert('这里是在url里运行JS,所有可以设置url的地方都能这么做');">运行a标签</a>
<script type="text/javascript">
alert('这里是直接放js脚本的地方');
a = "这里是隐式的定义变量a";
alert(a);
var a;
a = "这里是显式的定义变量a";
alert(a);
//可以一次定义多个变量
//可以在定义变量时为变量指定初始值
var a, b, c, d;
var i, j = 0, k = 0;
//基本数据类型
//js是弱类型脚本语言,声明变量时无须指定变量的数据类型。JS变量的数据类型是解释时动态决定的。但js的值保存在内存中,也是有数据类型的
//数值型:包含整数和浮点数
//布尔型:只有true和false
//字符串型:必须用引号括起来,可以是单引号也可以是双引号
//undefined:专门用来确定一个已经创建但是没有初值的变量
//null:用于表明某个变量的值为空
//数值类型
//科学计数法
var a, b;
a = 5E2;
b = 1.23e-3;
alert(a + "\n" + b);/**/
//如果数值只有小数部分,则可以省略整数0(不建议这么做),但小数点不能省略
b = 3.12e1;
c = 45.0;
d = .34e4;
e = .24e-2;
alert(b + '---' + c + '---' + d + '---' + e);
//注意:不要以0开头
var a;
a = 0x13;
var b;
b = 014;
alert(a + '---' + b);
//最大表示范围:1.7976931348623157e308
//
var x = 1.7976931348623157e308;
x = x + 1e292;
alert('这里是超出范围' + x);
var x = -1.7976931348623157e308;
x = x - 1e292;
alert('这里是超出范围负数' + x);
var y = -1.7976931348623157e308;
y = y - 1e292;
alert(y);
h = y + 3e3000;
alert('这里是NaN' + h);//直接放式子在里面不对
/*a = Number.POSITIVE_INFINITY;
b = Number.NEGATIVE_INFINITY;
alert(a + b);*/
//两个infinity的值总是相等的
var a = 3e30000;
var b = 5e20000;
alert(a == b);
//NaN是一个特殊的数值,它是Not a Number三个单词的首字母,表示非数。0除以0,或者以Inidinity执行算术运算都将产生NaN的结果。
//如果算术表达式中有个NaN的数值变量,则整个算术表达式的值为NaN
//NaN与Infinity不同的是,NaN不会与任何数值变量相等,也就是NaN==NaN也返回false。如何判断某个变量是否为NaN?isNaN()
var x = 0 / 0;
if (x != x) {
alert("NaN不等于NaN");
}
if (isNaN(x)) {
alert("x是一个NaN");
}
//字符串类型
//没有字符类型变量,全是字符串,表示相等直接用==就行
//String()类似于构造器,构建一个字符串
//charAt()获取字符串特定索引处的字符
//charCodeAt()返回字符串中特定索引处的字符所对应的Unicode值
//length()返回字符串长度,中文字符算一个字符
//toUpperCase()将所有字母转换成大写字母
//fromLowerCase()将所有字母转换成小写字母
//indexOf()静态方法,直接通过String类调用该方法,将一系列Unicode值转换成字符串
//lastIndexOf()返回字符串中特定字符串最后一次出现的位置
//substring()返回字符串的某个子串
//slice()返回字符串的某个子串,支持负数参数
//match()使用正则表达式搜索目标子字符串
//searth()使用正则表达式搜索目标子字符串
//concat()用于将多个字符串拼加成一个字符串
//split()将某个字符串分割成多个字符串
//replace()将字符串中某个子串以特定字符串替代
var a = "abc哈哈";
var b = a.length;//获取a的长度
var c = String.fromCharCode(97, 98, 99);//将Unicode值转换成字符串
//输出a的长度,以及字符串a在索引4处的字符和
//相应的Unicode值,以及c字符串变量的值
alert("这里是字符串类型" + b + "---" + a.charAt(4) + "---" + a.charCodeAt(4) + "---" + c);
//indexOf(searchString [,startIndex])搜索目标字符串searchString出现的位置,其中startIndex指定不搜索左边startIndex个字符
//lastIndexOf(searchString [,startIndex])搜索目标字符串searchString最后一次出现的位置。如果字符串中没有包含目标字符串,则返回-1.
var a = "helloworld"
var b = a.indexOf("llo");
var c = a.indexOf("llo", 3);//表示从索引3开始搜索,找不到llo的子串
var d = a.lastIndexOf("a");
alert("这里是判断子字符串位置" + b + "\n" + c + "\n" + d);
//注意:第一个字符串的索引是0而不是1
//substring(start [,end])从start(包括)索引处,截取到end(不包括)索引处,不截取end索引处的字符。如果没有end参数,将从start处遗址截取到字符串尾。
//slice(start[, end])与substring()的功能基本一致,区别是slice可以接受负数作为索引,当使用负数索引值时,表示从字符串的右边开始计算索引,即最右边的索引为-1.
var s = "abcdefg";
a = s.slice(0, 4);//截取第一个(包括)到第五个(不包括)
b = s.slice(2, 4);
c = s.slice(4);//取第五个(包括)到最后
d = s.slice(3, -1);//取第四个(包括)到倒数第一个(不包括)
e = s.slice(3, -2);
f = s.slice(-3, -1);//取倒数第三个(包括)到倒数第一个(不包括)
alert("这里是截取a : " + a + "\nb : "
+ b + "\nc : "
+ c + "\nd : "
+ d + "\ne : "
+ e + "\nf : "
+ f);
//match和search
//如果需要在字符串中使用单引号、双引号等特殊符号,则必须使用转义字符\
/*
\b 退格
\t 制表符
\n 换行
\v 垂直的制表符
\r 回车
\" 双引号
\' 单引号
\\ 反斜线
\OOO 八进制的拉丁字母
\xHH 十六进制拉丁字母
\uHHHH Unicode
*/
//布尔型
//值只有两个:true和false,逻辑运算的结果
if (1 + 1 == 2) {
alert("1+1=2");
}
else {
alert("1+1=3");
}
//undefined和null
//undefined类型的值只有一个undefined表示某个变量不存在,或者没有为其分配值,也用于表示对象的属性不存在。null表示变量的值为空
//undefined表示没有为变量设置值或属性不存在,而null表示变量是有值的,只是其值为null
//如果不进行精确比较,很多时候undefined和null本身就相等,即null=undefined将返回true,如果要精确区分,要使用精确等于号===
var x, y = null;
if (x === undefined) {
alert('声明变量后默认值为undefined');
}
if (x === null) {
alert('声明变量后默认值为null');
}
if (x == y) {
alert("x (undefined) == y (null)");
}
if (String.xyz === undefined) {
alert('不存在的属性值默认为undefined');
}
//正则表达式
/*本质是一种特殊字符串,这种特殊字符串允许使用“通配符”,因此一个正则表达式字符串可以
匹配一批普通字符串。从这个意义上来看,任意一个普通字符串也可算作正则表达式,只是该
正则表达式里不包含通配符,因此它只能匹配一个字符串
js的正则表达式必须放在两条斜线之间,如/abc/就是一个正则表达式,只是这个正则表达式只能匹配“abc”字符串
正则表达式可以:
•测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证
•替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字
•根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字
*/
//支持自动类型转换
//定义字符串变量
var a = "3.145";//如果是3.11就变成1.09999?
var b = a - 2;
//让字符串变量和数值执行家法运算,到底是算术运算还是字符串运算呢
var c = a + 2;
//输出b和c的值
alert("自动类型转换" + b + "\n" + c);
//对于减号运算符,因为字符串不支持减法运算,所以系统自动将字符串转换成数值
//对于加号运算符,因为字符串可用加号作为连接运算符,所以系统自动将数值转换成字符串,并将两个字符串进行连接运算
//toString():将布尔型、数值型等转换成字符串
//parseInt():将字符串、布尔型等转换成整数
//parseFloat():将字符串、布尔型转换成浮点数
var a = "3.145";
var b = a + 2;//直接加,自动类型转换,字符串
var c = parseFloat(a) + 2;
alert("强制转换" + b + "\n" + c);
//对于可以正常转换成数值的字符串,可以成功转换为数值,但对于包含其他字符的字符串,将转换成NaN
//档使用parseInt()或parseFloat()将各种类型的变量转换成数值类型时
//字符串值:如果字符串是一个数值字符串,则可以转换成一个数值,否则将转换成NaN
//undefined、null布尔值及其他对象:一律转换成NaN
//当使用toString函数将各种类型的值向字符串转换时,结果全部是object
//变量
//变量是程序设计语言里最重要、最基本的概念。与强类型语言不同的是,js是弱类型语言,同一个变量可以一会儿存储数值一会儿存储字符串
//变量声明有两种方式,显式声明和隐式声明,还有个重要的概念:作用范围
//根据作用范围的不同,分为全局变量和局部变量。直接定义的变量是全局变量,在函数里定义的变量叫局部变量,只在函数内有效,局部变量会覆盖全局变量
</script>
</body>
</html>
js数据类型
最新推荐文章于 2025-07-03 09:50:08 发布