JavaScript语法详解(三)__基本数据类型
2014-05-27 16:20
706 查看
JavaScript的基本数据类型有如下5个:
数值类型:包括整数和浮点数
布尔类型:只有true和false
字符串类型:必须用引号引起来,可以是单引号,也可以是双引号
undefined:专门用来确定一个已经创建,但是没有初始值的变量
null:用于表明某个元素的值为空
一.数值类型
JavaScript中的数值形式非常丰富,完全支持用科学计数法表示。
JavaScript除了支持十进制外,也支持十六进制和八进制数。十六进制数以0x开头,八进制数以0开头(并非所有浏览器都支持八进制)。
当数值变量的值超出其表述范围时,将出现两个特殊值:Infinity(正无穷大)和-Infinity(负无穷大)
Infinity(正无穷大)、-Infinity(负无穷大)与其他数值进行算术运算时,整个算术表达式将变成两一个特殊的值:NaN。但是Infinity(正无穷大)和-Infinity(负无穷大)都可以执行比较运算:两个Infinity总是相等的,而两个-Infinity也总是相等的。
注意:
JavaScript中的算术运算允许除数为0,正数除以0得Infinity,负数除以0得-Infinity,0除以0的NaN(非数)。算术表达式中有一个NaN,结果就为NaN。
NaN与Infinity和-Infinity的区别:NaN不会与任何数值变量相等,NaN=NaN也会返回false,JavaScript中提供了专门判断NaN的函数,isNaN().
关于浮点型,必须注意其精度的丢失问题。
1.6664999999999999 而不是理论上的1.6665
这种由于浮点运算产生的问题,在很多语言中都会出现。对于浮点数值的比较,尽量不要直接比较,推荐使用差值比较法——判断两个浮点数是否相等,通过判断两个浮点型变量的差值,只要差值小于一个足够小的数即可认为相等。
二.字符串类型
JavaScript 的字符串必须用引号括起来,此处的引号可以是单引号也可以是双引号。
注意:JavaScript和Java中的字符串主要区别
1)JavaScript中字符串可以用单引号引起来
2) javascript中比较两个字符串是否相等使用==即可,无需使用equals()。
Javascript以String内建类来表示字符串,String类里包含一系列方法和属来操作字符串。
String():类似于面向对象语言中的构造器,使用该方法创建一个字符串。
charAt():获取字符串特定索引处的字符
charCodeAt():返回字符串中特定索引处的字符所对应的Unicode值
length:属性,直接返回字符串长度。JavaScript中一个中文字符算一个字符。
toUpperCase():将字符串的所有字母转换成大写字母。
toLowerCase():将字符串的所有字母转换成小写字母。
fromCharCode():静态方法,直接通过String调用,将一系列Unicode值转换成字符串。
indexOf():返回字符串中特定字符串第一次出现的位置。
lastIndexOf():返回字符串中特定字符串最后一次出现的位置。
substring():返回字符串的某个子串。
slice():返回字符串的某个子串,功能比substring()更强大,支持负数。
match():使用正则表达式匹配目标子串
search():使用正则表达式搜素子串
concat():用于将多个字符串拼接成一个字符串
split():将某个字符串分割成多个字符串,可以指定分隔符
replace():将字符串中某个子串以特定的字符串代替。
例1:
输出:
indexOf(SearchString[,startIndex])
lastIndexOf(SearchString[,startIndex])
搜索不到返回-1.
输出:2 -1 8
substring(start[,end]):从start开始,截取到end(不包括end),没有end参数,则截取start到串尾。
slice(start[,end]):与substring()功能基本一致,区别是slice()可以接受负数作为索引(-1即最右边的索引)
abcd cd efg def de e
match()和search()都支持使用正则表达式作为子串,区别:前者返回匹配的子字符串,后者返回匹配的索引值。
match()支持使用全局匹配,通过g标志来表示全局匹配(返回所有,match()返回所有匹配正则表达式的子串所组成的数组,匹配不到返回null。
search()返回子串的索引值,匹配不到返回-1。
三.布尔类型
布尔类型的值只有两个:true和false。布尔类型的值通常是逻辑运算的结果,或者用于标示对象的某种状态。
四.undefined 和null
undefined 类型的值只有一个undefined,该值用于表示某个变量不存在,或者没有为其分配值,也用于表示对象的属性不存在。
null用于表示变量的属性值为空,undefined与null之间的差别比较微妙,undefined表示没有为变量设置值或属性不存在,null表示变量是有值的,只是其值为null
如果不进行精确比较,很多时候undefined 和null 本身就相等,即null==undefined 返回true
如果要精确区分null和undefined 应该考虑使用精确等于符(===)
声明变量后默认值为undefined
x(undefined)==y(null)
不存在的属性默认值为undefined
数值类型:包括整数和浮点数
布尔类型:只有true和false
字符串类型:必须用引号引起来,可以是单引号,也可以是双引号
undefined:专门用来确定一个已经创建,但是没有初始值的变量
null:用于表明某个元素的值为空
一.数值类型
JavaScript中的数值形式非常丰富,完全支持用科学计数法表示。
<script type="text/javascript"> //显示声明变量a,b var a, b; //给a,b使用科学计数法赋值 a = 5e2; b = 1.23e-3; //输出变量a的值 alert(a + "\n" + b); </script>
JavaScript除了支持十进制外,也支持十六进制和八进制数。十六进制数以0x开头,八进制数以0开头(并非所有浏览器都支持八进制)。
<script type="text/javascript"> //显示声明变量a,b var a,b; //使用十六进制给a赋值 a = 0x13; //使用八进制给b赋值 b = 014; //输出变量a,b的值 alert(a + "\n" + b); </script>
当数值变量的值超出其表述范围时,将出现两个特殊值:Infinity(正无穷大)和-Infinity(负无穷大)
<script type="text/javascript"> //定义x为最大的数值 var x = 1.7976931348623157e308; //再次增加x的值 x = x + 1e292; document.write(x); </script>
Infinity(正无穷大)、-Infinity(负无穷大)与其他数值进行算术运算时,整个算术表达式将变成两一个特殊的值:NaN。但是Infinity(正无穷大)和-Infinity(负无穷大)都可以执行比较运算:两个Infinity总是相等的,而两个-Infinity也总是相等的。
<script type="text/javascript"> //定义x为最小的数值 var x = -1.7976931348623157e308; //再次减小x的值 x = x -1e292; document.write(x + "\n"); //-Infinity执行算术表达式值为NaN document.write(x + 3e3000 + "\n"); //定义a为Infinity,b为-Infinity a = Number.POSITIVE_INFINITY; b = Number.NEGATIVE_INFINITY; document.write(a + b + "\n"); //两个-Infinity总是相等 document.write(x == b + "\n"); </script>
注意:
JavaScript中的算术运算允许除数为0,正数除以0得Infinity,负数除以0得-Infinity,0除以0的NaN(非数)。算术表达式中有一个NaN,结果就为NaN。
NaN与Infinity和-Infinity的区别:NaN不会与任何数值变量相等,NaN=NaN也会返回false,JavaScript中提供了专门判断NaN的函数,isNaN().
关于浮点型,必须注意其精度的丢失问题。
<script type="text/javascript"> //定义x为最小的数值 var x = .3333; //定义y为,并为其赋值x*5 var y = x * 5; document.write(y); </script>输出:
1.6664999999999999 而不是理论上的1.6665
这种由于浮点运算产生的问题,在很多语言中都会出现。对于浮点数值的比较,尽量不要直接比较,推荐使用差值比较法——判断两个浮点数是否相等,通过判断两个浮点型变量的差值,只要差值小于一个足够小的数即可认为相等。
二.字符串类型
JavaScript 的字符串必须用引号括起来,此处的引号可以是单引号也可以是双引号。
a="Hello World"; b='Hello World';a、b两个变量完全相等,JavaScript中没有字符类型。
注意:JavaScript和Java中的字符串主要区别
1)JavaScript中字符串可以用单引号引起来
2) javascript中比较两个字符串是否相等使用==即可,无需使用equals()。
Javascript以String内建类来表示字符串,String类里包含一系列方法和属来操作字符串。
String():类似于面向对象语言中的构造器,使用该方法创建一个字符串。
charAt():获取字符串特定索引处的字符
charCodeAt():返回字符串中特定索引处的字符所对应的Unicode值
length:属性,直接返回字符串长度。JavaScript中一个中文字符算一个字符。
toUpperCase():将字符串的所有字母转换成大写字母。
toLowerCase():将字符串的所有字母转换成小写字母。
fromCharCode():静态方法,直接通过String调用,将一系列Unicode值转换成字符串。
indexOf():返回字符串中特定字符串第一次出现的位置。
lastIndexOf():返回字符串中特定字符串最后一次出现的位置。
substring():返回字符串的某个子串。
slice():返回字符串的某个子串,功能比substring()更强大,支持负数。
match():使用正则表达式匹配目标子串
search():使用正则表达式搜素子串
concat():用于将多个字符串拼接成一个字符串
split():将某个字符串分割成多个字符串,可以指定分隔符
replace():将字符串中某个子串以特定的字符串代替。
例1:
<script type="text/javascript"> //定义字符串变量a var a = "abc中国"; //获取a的长度 var b = a.length; //将一系列Unicode值转化成字符串 var c = String.fromCharCode(97, 98, 99); //输出a的长度,以及字符串a在索引4处的字符和相应的Unicode值 //以及c字符串变量的值 document.write(b + "\n" + a.charAt(4) + " " + a.charCodeAt(4) + "\n" + c); </script>
输出:
indexOf(SearchString[,startIndex])
lastIndexOf(SearchString[,startIndex])
搜索不到返回-1.
<script type="text/javascript"> //定义字符串变量a var a = "hellojavascript"; //搜索llo子串第一次出现的位置 var b = a.indexOf("llo"); //跳过左边三个字符,开始搜索llo子串第一次出现的位置 var c =a.indexOf("llo",3); //搜索a子串最后一次出现的位置 var d = a.lastIndexOf("a"); //输出 document.write(b + "\n" + c + "\n" + d ); </script>
输出:2 -1 8
substring(start[,end]):从start开始,截取到end(不包括end),没有end参数,则截取start到串尾。
slice(start[,end]):与substring()功能基本一致,区别是slice()可以接受负数作为索引(-1即最右边的索引)
<script type="text/javascript"> //定义字符串变量a var a = "abcdefg"; //取第一个到第五个的字符串 var b = a.slice(0, 4); //取第三个到第5个的子串 var c = a.slice(2, 4); //取第5个到串尾 var d = a.slice(4); //取第4个到倒数第一个 var f = a.slice(3, -1); //取第4个到倒数第二个 var g = a.slice(3, -2); //取倒数第3个到倒数第2个 var h = a.slice(-3, -2); document.write(b + "\n" + c + "\n" + d+"\n"+f+"\n"+g+"\n"+h ) </script>输出:
abcd cd efg def de e
match()和search()都支持使用正则表达式作为子串,区别:前者返回匹配的子字符串,后者返回匹配的索引值。
match()支持使用全局匹配,通过g标志来表示全局匹配(返回所有,match()返回所有匹配正则表达式的子串所组成的数组,匹配不到返回null。
search()返回子串的索引值,匹配不到返回-1。
<script type="text/javascript"> //定义字符串变量a var a = "--abc@d.comefg"; //从a中匹配正则表达式 var b = a.search(/[a-z]/); var str = "1dfd2dfs3df5"; //查找字符串中所有单个数值 var c = str.match(/\d/g); // 输出 document.write(b + "\n" + c) </script>输出:2 1,2,3,5
三.布尔类型
布尔类型的值只有两个:true和false。布尔类型的值通常是逻辑运算的结果,或者用于标示对象的某种状态。
四.undefined 和null
undefined 类型的值只有一个undefined,该值用于表示某个变量不存在,或者没有为其分配值,也用于表示对象的属性不存在。
null用于表示变量的属性值为空,undefined与null之间的差别比较微妙,undefined表示没有为变量设置值或属性不存在,null表示变量是有值的,只是其值为null
如果不进行精确比较,很多时候undefined 和null 本身就相等,即null==undefined 返回true
如果要精确区分null和undefined 应该考虑使用精确等于符(===)
<script type="text/javascript"> //声明变量x,y var x, y = null; //判断x的值是否为空 if (x === undefined) { document.writeln("声明变量后默认值为undefined"); } if (x === null) { document.writeln("声明变量后默认值为null"); } //判断x是否与y(其值为null)相等 if (x == y) { document.writeln("x(undefined)==y(null)"); } //精确判断x是否与y(其值为null)相等 if (x === y) { document.writeln("x(undefined)===y(null)"); } //测试一个并不存在的属性 if (String.abc === undefined) { document.writeln("不存在的属性默认值为undefined"); } </script>输出:
声明变量后默认值为undefined
x(undefined)==y(null)
不存在的属性默认值为undefined
相关文章推荐
- 【学习笔记】JavaScript——基本语法与数据类型
- JavaScript---基本语法学习(一)JavaScript概述、Java和JavaScript的区别、和HTML结合方式、数据类型、运算符和表达式
- javascript数据基本类型和引用类型区别详解
- javascript中6种基本数据类型详解
- 学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)
- (3)JavaScript基础(基本语法:变量与数据类型、类型转换、运算符、流程控制、函数、对象、自定义对象、原型)
- javascript:引入 基本数据类型 基本语法 类型转换 数组的单列
- nodejs入门级基础(数据类型,最基本的语法详解)
- php程序员学习javascript:第一章:javascript基本语法:数据类型
- JavaScript学习笔记一 - 基本语法,数据类型、变量
- JavaScript语法详解(二)__ 数据类型和变量
- Python基本语法_基本数据类型_序列类型详解
- JavaScript基础1——基本语法和数据类型
- JavaScript-基本语法和数据类型
- JavaScript 基础(1)ECMAScript(基础语法)——语法、数据类型、基本运算和逻辑运算
- JavaScript基本语法+数据类型+运算符
- 01-javaScript基本语法、数据类型、变量
- JavaScript中的五种基本数据类型详解
- Python基本语法_基本数据类型_数值型详解
- Python详解(一)Python的基本语法,简单数据类型,和while,for循环控制,ifesle控制