js数据类型

<!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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值