JavaScript中基本数据类型

JavaScript是弱类型脚本语言,在声明变量是无需指定数据类型,他的类型由JavaScript动态决定
在JavaScript中,基本数据类型有一家五个

  1. 数值类型:包含整数Int等和浮点数Float等
  2. 布尔类型:只有true和false两个值
  3. 字符串类型:定义时用引号括起来,无论是单引号还是双引号
  4. undefined类型:用来确定,表示一个已经创建,但是还没有初值的变量
  5. null类型:用于表示某个变量的值为空

数值类型

由于JavaScript中数值类型包含整形和浮点数,所 以数值类型的形式非常丰富,可整数可小数,也可以表达科学计数法,如3.14e2,3.14E2都可以表达为3.14乘以10的2次方,(间隔符E不区分大小写),且如果整数部分为0,只有小数部分,则小数点前的0也可省略,即 0.14e2表示为 .14e2

数值类型除了支持20进制,同时也支持16进制和8进制,

  • 16进制以0X或者0x开头,如0X151,0xafff,(9以上的数用a~f表示)
  • 8进制以0开头,只能出现0~7的数值,如014,026(所以在定义十进制数时,前面千万不要多写0,会被认定成0进制数而出现错误)
数值类型表述范围问题

由于数值类型都有范围,所以不要定义或在使用中让存储的值超出其表示范围,如果超出,将会出现两个特殊值:Infinity(正无穷)和-Infinity(负无穷),前者表示数值大鱼数值类型的最大值了,后者表示数值小于数值类型的最小值了
在出现超出范围的情况后,值将变成Infinity(-Infinity),此后即便将值减小到(增大到)数值类型所能表示的范围,Infinity(-Infinity)也不会改变,所以只要两个值变成了Infinity,不管他实际值应当是什么,他们此时的值都是相等的。

<script type = "text/javascript">
	var a = 3e30000;
	var b = 8e80000;
</script>

虽然不考虑数值存储范围,两个值明显不等,但是他们此时超过表达范围,他们抛去了实际值都变成了Infinity,所以在判定时,a与b是相等的

与此同时,由于正负无穷的存在,JavaScript的算术运算允许除数为0的计算,整数除0得到Infinity,负数除0得到-Infinity,若计算0除0,则又会得到另一个值:NaN

NaN意为Not a Number,即表示非数,0除0,无穷大除无穷大,都会得到NaN,只要算术表达式中有一个NaN的值,计算得到的值就为NaN

NaN不与任何数值相等,这是它与Infinity的区别(NaN不等于NaN),若想判定某个变量是否为NaN,JavaScript提供了专门函数isNaN()来判定,若括号内的值为NaN,则返回true

JavaScript也提供了一些简单的方法访问这些特殊值,特殊值通过JavaScript的内嵌类Number访问
在这里插入图片描述

浮点数精度问题
<script type = "text/javascript">
	var a = .6666;
	var b = a * 5 ;
	var c = 3.333;
	alert(b + "\n" + c);
</script>

在上面的代码中,a*5理论值为3.333,但实际并不是
在这里插入图片描述
可以发现,在计算中出现了精度丢失,这在编程语言中经常出现,虽然丢失的数非常之小,但是这个问题会很大的影响两个浮点数比较问题,这个问题的解决在各种语言里有一个通用的方法——差值比较
丢失的值很小,所以在比较时,让上述程序中的b减去c,如果得到的数小于一个足够小的数,就可以认为两个数相等

<script type = "text/javascript">
	var a = .6666;
	var b = a * 5 ;
	var c = 3.333;
	document.writeln(b + "\n" + c);
    
    if(b - c <= 0.5e-5){
        document.writeln("b和c相等!");
    }
</script>

在这里插入图片描述

字符串类型

JavaScript的字符串必须用引号括起来,单双引号都可,并且JavaScript中没有字符类型,所以即使

<script type = "text/javascript">
	var a = 'a';
</script>

定义了单个字符,但JavaScript也将其视为字符串

字符串String的一些操作

JavaScript中的字符串较为复杂,String类包含了很多操作字符串的方法

  • String( ):类似于面向对象语言中的构造器,使用该方法可以构建一个字符串。
  • charAt( ):获取字符串特定索引处的字符。(索引从0开始,如索引4代表第5个字符)
  • charCodeAt( ):返回字符串中特定索引处的字符所对应的Unicode值。(计算机科学领域里的一项业界标准,包括字符集、编码方案等)
  • x.length:属性,直接返回字符串x的长度。JavaScript 中的中文字符算一个字符。
  • toUpperCase( ):将字符串的所有字母转换成大写字母。
  • toLowerCase( ):将字符串的所有字母转换成小写字母。
  • fromCharCode( ):静态方法,直接通过String类调用该方法,将一系列Unicode值转换成字符串
  • indexOf( );返回字符串中特定字符串第一次出现的位 置。
  • lastIndexOf( ):返回字符串中特定字符串最后一次出现的位置。
  • substring( ): 返回字符串的某个子串。
  • slice( ):返回字符串的某个子串,功能比substring更强大,支持负数参数。
  • match( );使用正则表达式搜索目标子字符串。
  • search( ):使用正则表达式搜索目标子字符串。
  • concat( ):用于将多个字符串拼加成-一个字符串。
  • split( ):将某个字符串分隔成多个字符串,可以指定分隔符。
  • replace( ):将字符串中某个子串以特定字符串替代。

上述方法中,如length,indexOf,lastIndexOf( ),substring( ),slice( ),match( )等等作用为“搜索”,“获取”的方法都不会改变字符串的实际值,他们需要用一个新的变量来输出、接住方法返回的值,如

<script type = "text/javascript">
	var a = 'abc中国iloveyou';
	var b = a.length;
	var c = String.fromCharCode(97,98,99);
	var d = a.indexOf("love");
	var e = a.indexOf("o,10");
	var f = a.lastIndexOf("o");
	var g = a.slice(0,4);
	var h = a.slice(3,-2);
    document.writeln(a);
    document.writeln(b);
    document.writeln(c);
    document.writeln(d);
    document.writeln(e);
    document.writeln(f);
    document.writeln(g);
    document.writeln(h);
</script>

在这里插入图片描述

布尔类型

布尔类型的值只有两个:true,flase。布尔类型的值通常是逻辑运算的街而过,或用于表示对象的某种状态,常常在if等判断语句的判定条件中出现。

undefined和null

undefined类型的值只有一个undefined,该值用于表示某个变量不存在,或者没有为其分配值,但也用于表示对象的属性不存在,

null用于表示变量的值为空,(注意,是代表变量有值,只是值为null)

上面两个值如果不进行精确比较,很多时候两个值都代表没有,即undefined==null的值为true,但是他们的类型毕竟不同,所以用精确等于符( === )时,undefined === null比较时会返回false。

正则表达式

正则表达式本质是一种特殊的字符串,这种特殊字符串允许使用“通配符”,所以一个正则表达式可以表达一批规律相同的普通字符串,所以可以说任意一个普通字符串也可算作一个特殊的正则表达式,只是该表达式值匹配该字符串。
JavaScript的正则表达式必须放在两条斜线之间,如/abc/,它只匹配值为“abc”的字符串
正则表达式支持的合法字符
在这里插入图片描述
正则表达式支持的通配符
在这里插入图片描述
正则表达式需要的特殊字符(频率修饰词)
在这里插入图片描述
结构上,正则表达式由这三部分组成
除此之外,正则表达式还支持()表示法,用()可以将一个表达式形成一个固定组,还可以用丨表示互斥,例
/((abc)|(efg))/ —— 匹配abc或efg

JavaScript提供了一个test()方法,用于判断改正则表达式是否匹配了某个字符串,
提供了一个replace()方法,用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

正则表达式使用的一些例子

<script type = "text/javascript">
	var m = "abfd--abc@d.comcdefg";
	var a = m.search(/[a-z]+@d. [a-zA-Z](2)m/);
	var n = "1dfd2dfs3df5";
	var b = n.match(/\d/g);
	alert(a + "\n" + b);
</script>

a表示从s中匹配一个格式为(开头为小写字母,中间是‘@d.’,然后是两个不论大小写的字母,最后是m)的字符串,即为 abc@d.com,首字母a的索引为6,所以该式输出会得到一个6.
b表示查找n字符串中所有数字,最后的g表达执行全局匹配,即扩大搜索范围,运行后得到结果:1,2,3,5、

如果需要在字符串中使用单引号、双引号等特殊字符,则必须使用转义字符,JavaScript的转移字符是“\”

  • \b:退格
  • \t:制表位,表示空一个TAB空格
  • \n:换行回车
  • \v:垂直的制表符
  • \r:回车
  • ":双引号
  • ':单引号
  • \:反斜线
  • \〇〇〇:使用八进制表示拉丁字母,〇〇〇表示一个3位的八进制整数,范围是000 ~ 377
  • \xHH:使用十六进制数表达拉丁字母,JJ表示一个2为的十六进制整数,范围是00 ~ FF
  • \uHHHH:使用十六进制(该数值指定该字符的Unicode值)表示的字符,HHHH表示一个4位的十六进制整数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值