1、一元运算符
在说数据类型之前,我要说一下一元运算符,typeof<它能验证数据类型>,是一种操作符,可以对一个变量进行辨别是什么类型,根据它返回的结果,始终是一个值(字符串),对不同的操作数,它返回不同的结果,(弹出的字符串就是验证的数据类型),我们常用的是用来弹出数据类型,可能返回以下的字符串,它们分别代表了不同的类型.
<script type="text/javascript">
var a=888; document.write('(1)'+typeof a+"<br />"); //返回number 数字类型
var b=NaN; document.write('(2)'+typeof b+"<br />"); //返回number 数字类型
var c=Number.MIN_VALUE; document.write('(3)'+typeof c+"<br />"); //返回number 数字类型
var d=Infinity; document.write('(4)'+typeof d+"<br />"); //返回number 数字类型
var e="123"; document.write('(5)'+typeof e+"<br />"); //返回string 字符串类型
var f=true; document.write('(6)'+typeof f+"<br />"); //返回boolean 布尔类型
var g=window; document.write('(7)'+typeof g+"<br />"); //返回object 对象类型
var h=document; document.write('(8)'+typeof h+"<br />"); //返回object 对象类型
var i=null; document.write('(9)'+typeof i+"<br />"); //返回object 对象类型
var k=Date; document.write('(10)'+typeof k+"<br />");//返回function 函数类型
var j=eval; document.write('(11)'+typeof j+"<br />");//返回function 函数类型
var sss; document.write('(12)'+typeof l+"<br />");//返回undefined 未定义类型
var m=undefined; document.write('(13)'+typeof m+"<br />");//返回undefined 未定义类型
</script>
2、相信,看到这里,大家都对typeof,一元运算符,有一定的了解了.页面输出的字符串分别代表了不同类型的数据.
其中,数据类型有一个特殊的值———Infinity 属性 用于存放表示正无穷大的数值. 无法使用 for/in 循环来枚举 Infinity 属性,也不能用 delete 运算符来删除它.Infinity 不是常量,可以把它设置为其他值.
在下列代码中,将展示当一个数超出了 infinity 的限制发生的情况:
<script type="text/javascript">
<span> </span>var t1=1.7976931348623157E+10308
<span> </span>document.write(t1)
<span> </span>document.write("<br />")
<span> </span>var t2=-1.7976931348623157E+10308
<span> </span>document.write(t2)
</script>
以上代码输出的值是 lnfinity 、-Infinity 这说明:一个数一旦超出了 infinity 的限制 将返回 lnfinity 、-Infinity . 如果超出正数范围,输出Infinity(正无穷大),超出负数范围,输出-Infinity(负无穷大)
而且 +-Infinity不能参与数值计算!
2.1、对于数字类型的操作数而言 typeof 返回的值是number .比如说:typeof(1), 返回的值就是number. 当然数字类型也有例外, 其中一些非常规的数字类型 其返回的类型是
数字类型
Number如NaN、NaN在js中的意思是表示NaN 属性是代表非数字值的特殊值.同时该属性用于指示某个值不是数字.可以把 Number 对象设置为该值,来指示其不是数
字类型.同时我们需要注意伴随着NaN还有全局函数 isNaN() 全局函数isNaN用来判断一个值是否是NaN 值(是否为数字). 虽然NaN比较特殊但是它本身是一个数字类型.
常见的Number数据类型转化
Number()可用于任何类型,parseInt()和parseFloat专门用于把字符串转换成数值
虽然 这三种函数可以转换接收各种进制的数字 Number()、parseInt()、parseFloat() 但对于含数字的字符串并不适用
Number()、parseInt()、parseFloat()中数字为1.2. 会报错,但字符串为'1.2.'则不会报错
*Number.NaN是一个特殊值,说明某些算术运算(如求负数的平方根)的结果不是数字.方法parseInt() <取整>和parseFloat()<保留浮点数> 在不能解析指定的字符串时就
返回这个值.对于一些常规情况下返回有效数字的函数,通常我们也可以采用这种方法,用 Number.NaN 来说明它的错误情况JavaScript 以 NaN 的形式输出 Number.NaN.请注
意,NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内,因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较.
NaN:Not a Number.这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错.例如:1/0 返回的就是NaN,NaN的特点:
1、任何涉及NaN的操作都会返回NaN, (NaN报错!)
2、NaN对任何值都不相等,包括自己NaN本身.针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型.
3、Number 浮点数值的最高精度是17位小数
4、isNaN()来判断这个数字是不是NaN,包含着隐式类型转换Number()
NaN使用方法如下:
<script type="text/javascript">
var Month=30;
if (Month < 1 || Month > 12)
{
Month = Number.NaN;
}
document.write(Month);
</script>
Number.MAX_VALUE 可表示的最大数字
Number.MIN_VALUE 可表示的最小数字(与零最接近)
Number.NaN 特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY 表示负无穷大的特殊值
*以上五种包括NaN、Infinity这些特殊类型,在用typeof进行运算,其结果都将是number. <t他们都是特殊的Number数据类型>
取整函数parseInt():在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则
继续解析,直到解析完成或者遇到非数字字符。
parseInt()是专门用来处理字符串转换数字而存在的,所以parseInt(其他类型包括'')//NaN
2.2、对于字符串类型 typeof 返回的值是 string .比如typeof('789')返回的值是string. <一般使用' '号包含的都是字符串数据类型!包括空' '>字符串,用一对单引号(' ')或双引号
(“ ”)及引号内的字符构成,引号中间的部分可以任意多个,也可以是没有字符的空字符串.字符串中如果字符包含了双引号,则其外部应该由单引号标示,反之相同.String对象是动态
对象,需要创建对象实例后才能引用它的属性和方法.在创建一个String对象变量时,可以使用new运算符来创建,也可以直接将字符串赋给变量.例如:
oBox="Hello"与oBox=new String("hello")是等价的.
var a=6+'5';
alert(a);
对于这种加号在其中起到拼接的作用 +加号 是运算符 但是它比较特殊 , 当发现数据类型不对等时, 它就作为拼接的作用存在 . 上面这段代码最后弹出的值是65而非11
字符字面量,也叫转义序列
\n 换行
\t 制表
\b 空格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号
\" 双引号
xnn 以十六进制nn表示一个字符(n为0-f),如\x41表示'A'
\unnnn 以十六进制nnnn表示一个Unicode字符(n为0-f),如\u03a3表示希腊字符ε
字符串可以是引号中的任意文本。您可以使用单引号或双引号:
2.3、 Boolean 布尔类型 Boolean布尔只有两个值 true <真>和false <假> 但js中所有的变量都可以使用Boolean()函数转换成为 Boolean 类型的值,即真 true 和假 false
1>、true (真) 对 代表值为 1 (非零即真) 真:true、非零数字、非空字符串、非空对象
2>、false (假) 错 代表值为0 其中false(假) 常用的几种值 false、数字零0 、" "( 空字符串 、引号中间虽然为空 但是还是代表着一个值)、undefined(未定义) 、null(空) 这
五种值都是假false
注意的是:true 和 false 都是Boolean 里面特殊的关键字 不需要等号 ;
Boolean出现的场景:
1、条件语句导致系统执行的隐式类型转换
2、字面量或变量定义
Boolean常用数据类型转换
1. Number(true): 1 || Number(false) : 0
2. String(true):'true' || String(false):'false'
//使用Boolean()变量判别真假相对应的值
Boolean(undefined):false
Boolean(null):false
Boolean(非空对象包括空数组[]和空对象{}):true
Boolean(非0): true || Boolean(0和NaN):false
Boolean(非空包括空格字符串):true || Boolean(''):false
这里我们需要注意的是:<span style="color:#ff0000;">true</span>不一定等于1,<span style="color:#ff0000;">false</span>也不一定等于0
2.4、undefined 未定义类型
如果运算数/变量是没有定义的, 比如说不存在, 的变量 函数等, 或者 undefined 将返回undefined (未定义) 如上面我们用 typeof 验证数据类型 typeof(sss) typeof (undefined) 都将返回 nudefined undefined 只有一种数据类型 即它本身 使用var 声明变量 但是未其对初始化的 那么这个变量就是最好的undefined 类型的例子 如下
var i;
alert(i==undefined);
这将返回true 真!
对于从未定义的变量 需要使用时去使用一元运算符号去检测这个变量的数据类型,但即使是这样在严格模式下也会发生错误
常见的undefined数据类型转换
布尔类型Boolean(undefined):false
数字类型Number(undefined):NaN
字符串类型String(undefined):'undefined'
undefined 通常在以下五种时刻会出现
1、已声明未赋值的变量
2、获取对象不存在的属性
3、无返回值的函数的执行结果
3、函数的参数没有传入
3、void(expression)
2.5、null (空类型) null也只有一值 null 、null 表示一个空对象 的指针
如果我们通过声明的变量在另一个地方用于去保存对象,最好先先给这个变量初始化 使得这个变量的值为空即是null .
其实undefined是等于null的 undefined == null 因为undefined 的值是null赋予的
常见的unll数据转换 代码如下:
1、Boolean(null):false
2、Number(null):0
3、String(null):'null'
null (空类型)在以下几种情况会出现
对象不存在时!
null特别需要注意的是这两点
*!1 null是空对象指针,而[]是空数组,{}是空对象,三者不相同
*!2 null不能添加自定义属性
3、五种基本数据类型,<总结>
在javascript中申明我们声明变量, 使用的关键字都是var, 这点与其它的编程语言不尽相同, 但是javascript亦含有五种基本的数据类型( 简单常用的五种)它们分别是:
3.1、Undefined未定义类型, 2、Null空类型, 3、 Boolean布尔类型, 4、Number数字类型,和 5、 String字符串类型,
Strong 常用的字符串类型代表:" " ''
Boobean 常用的布尔类型代表:true/false
undefiend常用的未定义类型代表:undefiend/ var a;
Object 常用的对象类型代表:{X:1,Y:2}
function 常用的函数类型代表:function(){};
声明变量类型
当您声明新变量时,可以使用关键词 "new" 来声明其类型:
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
JavaScript 变量均为对象,当您声明一个变量时,就创建了一个新的对象.
函数类型:function 对象类型:Object
数组类型:Array 日期类型:Date
数学式: Math 正则表达式:RegExp
复合数据类型 数组对象Array
//var a = new Array(); //未添加值的数组
//var a = new Array(10,20,30,"string",40); //五个值 这是声明数组对象的办法之一
//var a = [10,20,30,"string",40]; //五个值 这也是声明数组对象的办法
//var a = new Array(3); //限定数组的长度 并且创建数组
var arr= new Array("张三","李四","王五","赵六");
document.write("Name:<br>");
for( I in arr) //循环遍历输出所有的数组
{
document.write(arr[i]); //页面输出Name的值
}
数学对象
//和Global一样不能使用new运算符创建,Math对象在程序运行时
//有JavaScript环境创建并初始化
//调用方法:Math.[ {属性名|方法名} ];
//常用方法和属性:
//名称 类别 作用描述
//PI 属性 返回圆周率
//SQRT2 属性 返回2的平方根值
//abs() 方法 返回数字的绝对值
//cos()
//sin()
//max() 方法 返回给定组数中的最大值
//min()
//sqrt() 方法 返回给定数的平方根
//Tan() 正切
//round() 方法 返回与给定数最接近的整数
//log() 方法 自然对数
//pow() 方法 返回给定数的指定次幂
//Date对象的常用方法
//getDate(): 返回对象中本地时间表示的日期
//getYear(): 返回对象中本地时间表示的年值
//getMonth(): 返回对象中本地时间表示的月份值
//注意:所取得的月值等于0~11间的数,且总比本地时间月数小1 特殊的从零开始
//getDay(): 返回星期。注意:0~6表示星期天~星期六 0代表星期天
//getHour(): 返回小时
//getSeconds(): 返回秒
//getMinutes() 返回分钟
//setDate(dateVal): 设置日期
//setYeat(yearVal): 设置年份
//setMonth(MonthVal): 设置月份
// 日期对象
//date = new Date(); 获取当前事件
//date = new Date(val); 创建国际标准日期
//date = new Date(y,m,d[,h[,min[,sec[,ms]]]]); 创建指定年月日时分秒的日期,时分秒为可选项
var cur = new Date();
var years = cur.getYear();
var months = cur.getMonth();
var days = cur.getDate();
var hours = cur.getHours();
var minutes = cur.getMinutes();
var seconds = cur.getSeconds();
alert("北京事件:"+years +"年"+(months+1)+"月"+days+"日"+hours+"时"+minutes+"分"+seconds+"秒");
变量的命名规范(五项)
2.1、 变量命名可以是字母a-z/A-Z(大小写字母开头) 或_(下划线) 与$(美元符号)起始. 变量名不能包含空格或加号,减号或符号
//如oLi2 _aBtn $oBox (通常都不使用_ $下划线或者$美元符)
2.2、变量命名的字符长度不允许超过255个字符且变量命名中间不允许有空格.
//使用正确的命名长度:如循环中用一个字符,如i ;或j; 条件和循环变量用一个单词,方法名1-2个单词,类名2-3个单词,全局变量3-4个单词.变量名要使用 有意义的名称,通过变量名能大概反映出其具体的用途.
2.3、变量命名首个字符不允许为数字.
// 如:8oTxt (这是错误的命名!需要注意) 但是能在字母追加数字如: oLi2 (这是正确的)
2.4、 变量不能使用Javascript脚本语言中预留的关键字,及其保留字. javascript中定义了40多个关键字
//如javascript中预留的:true,false,while,case,break保留字等
2.5、 JavaScript中大小写敏感so(大写字母的变量与小写字母的变量是两个不同的变量) 例如Name与name代表两个不责骂的变量.可以在程序分别对其进行声明,赋值和引用.
//如 oB 与ob 是两个不同的变量
JavScript 中三大经典变量命名法 命名规范:能看懂并且符合规范
在这里我习惯使用使用匈牙利命名法 类型前缀加首字母大写 (在下面我枚举各种类型的前缀)
s:表示字符串.n:表示数字. b:表示逻辑. a:表示数组.r:表示正则表达式 .f:表示函数 .o:表示对象 .g:表示全局变量.
1、匈牙利命名法:类型前缀+首字母大写 使得更容易看懂作用
通过在变量名前面添加相应小写字母的符号标示作为前缀,标示出变量的作用域,类型等,前缀后面是一个或多个单词组合,单词描述了变量的用途.
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途.
var sUserName;
var iCount;
var printLoadTemplates;//名称首字母小写,其他每个单词的首字母大写
var print_load_templates;//下划线法,每个单词用一个下划线标记
示例如下:
var UserName;