js数据类型

基本数据类型: Undefined;Null;Boolean;Number;String
复杂数据类型: Array,Date,Object(注: 与java对象有点区别的,js对象可以添加属性)
object本质上是由一组无序的名值对组成的

(js数据类型可以更改,但是不建议改)
var msg = "message";
msg = 1;
有效,但不建议使用

typeof操作符(检测给定变量的数据类型),可能返回的结果如下:
“undefined”——如果这个值未定义(对未初始化和未声明的变量);
“boolean”——如果这个值是布尔值;
“string”——如果这个值是字符串;
“number”——如果这个值是数值;
“object”——如果这个值是对象或null或[ ];
“function”——如果这个值是函数。

注意: typeof 是一个操作符而不是函数,因此圆括号尽管可以使用,但不是必需的。
eg:
var message = "some string";
alert(typeof message); // "string"
alert(typeof(message)); // "string"

instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

Undefined类型
声明了但是没有初始化的变量被默认赋值为undefined;未声明的变量使用会报错,只除了使用typeof
undefined === void 0 //true

Null类型
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null 而不是其他值

Boolean类型(true 和false)
要将一个值转换为其对应的Boolean 值,可以调用转型函数Boolean()
转换规则:

数据类型    转换为true的值                   转换为false的值
Boolean         true                            false
String      任何非空字符串                      ""(空字符串)
Number      任何非零数字值(包括无穷大)          0和NaN
Object      任何对象                            null
Undefined       n/a                          undefined

n/a(或N/A),是not applicable 的缩写,意思是“不适用

Number类型
注意: 浮点数值计算会产生舍入误差的问题(例如: 0.1 + 0.2 = 0.30000000000000004)
数值范围: 最小值 Number.MIN_VALUE 5e-324 -Infinity(负无穷)
最大值 Number.MAX_VALUE 1.7976931348623157e+308 Infinity(正无穷)
当数值超过范围时,会返回Infinty,这个值是不可以参与计算的
可使用isFinite()函数判断,若在,为true
10/0 // 返回Infinity

NaN,即非数值(Not a Number)是一个特殊的数值
    这个数值用于表示一个本来要返回数值的操作数未返回数值的情况
    注意: 任何涉及NaN 的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。
        NaN 与任何值都不相等,包括NaN 本身。
        eg: alert(NaN == NaN); //false
    isNaN()可判断值是否为数字,若是,返回false
    注意:isNaN()会尝试将其他类型的转化为数字,若失败,为非数字:
    eg: 
    alert(isNaN(NaN)); //true
    alert(isNaN(10)); //false(10 是一个数值)
    alert(isNaN("10")); //false(可以被转换成数值10)
    alert(isNaN("blue")); //true(不能转换成数值)
    alert(isNaN(true)); //false(可以被转换成数值1)
数值转换:
Number(): 可用于任何类型转为数字
eg:
var num1 = Number("Hello world!"); //NaN,如果含有任何不能转为数字的字符,都是NaN(undefined)
var num2 = Number(""); //0,空字符串
var num3 = Number("000011"); //11,忽略前面的0;会识别16进制(0x12->18);识别浮点数
var num4 = Number(true); //1,true-1;false-0

parseInt();parseFloat(): 仅用于字符串转数字;如果第一个字符不是数字或负号.返回NaN,包括空字符串;
    如果是,继续解析,直到碰到不是数字的,忽略后面的所有字符
var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseFloat("22.34.5"); //22.34
var num4 = parseFloat("0908.5"); //908.5

parseInt()不识别浮点数,碰到小数点就会开始忽略;
    识别2进制8进制和16进制,一般传2个参数(第二个为进制,包括十进制)
var num5 = parseInt(22.5); // 22
var num6 = parseInt("AF", 16); //175
var num7 = parseInt("AF"); //NaN

parseFloat()如果没有小数点,返回整数;只识别10进制
var num8 = parseFloat("1234blue"); //1234
var num9 = parseFloat("0xA"); //0

String类型
ECMAScript 中的字符串是不可变的,改变都是新创建的字符串,销毁原来的字符串
toString(): 几乎所有类型都有 toString()方法,但注意 null 和 undefined 没有
数字类型的可以添加参数,参数为进制数
String(): 这个函数能够将任何类型的值转换为字符串,null 和 undefined 返回对应的字面量

Object类型
Object 的每个实例都具有下列属性和方法:
- constructor:保存着用于创建当前对象的函数,构造函数(constructor) 就是 Object()。
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例
的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例
如:o.hasOwnProperty(“name”))。
- isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符 串形式指定。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。 toString():返回对象的字符串表示。
- valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值 相同。

 数据类型的转换:
 隐式:(直接转,按规则)
           String+number=String
           String+boolean=String/boolean
           number+boolean=number
           boolean+boolean=number
显示:(使用相应的方法转)
           xxx.toString()
           parseInt(xxx)
           parseFloat()
           isNaN(xxx)----true/false   (is not a number)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值