JavaScript数据类型

概述

JavaScript是通过ECMAScript伪语言进行描述的,ECMA-262第3版是目前浏览器实现最多的版本,第5版是未来浏览器要实现的版本

语法风格

Javascript语法风格类C语言,区分大小写

标识符

标识符即变量、函数、属性的名字而已,Javascript中标识符的命名规则如下:

① 首字符必须是字母或下划线或美元符号

② 其他字符可以是字母、下划线、美元符号

③ 标识符采用驼峰大小写格式,即第一个字母小写,其他每个有意义单词的首字母大写,例如firstChar

注释方法

由于Javascript语言类C,所以,它也使用C语言注释风格,包括单行注释和多行注释

1 //单行注释
2 
3 /*多行注释
4 
5 
6  */

严格模式

ECMAScript在第5版中引入了严格模式。在严格模式下,Javascript将执行一种不同的解析与执行模型,之前的一些不确定行为将得到处理或错误提示。可以在整个脚本中使用严格模式,亦可以在指定的函数中使用严格模式,只需要将"use strict" 放在它们的前面即可

变量

根据ECMA-262定义,Javascript的变量是弱类型的,它只是在特定时间用于保存特定值的一个名字而已。变量的值及其数据类型都可能在执行过程中改变,即Javascript中的变量可以用来保存任何类型的数据,变量的定义格式:

1 var someValue;  //未经初始化,默认保存了undefined值
2 var messages="Hello World!"; //定义变量,并直接初始化为Hello World!
3 var messages=120;            //更改变量的值和类型

PS:使用var操作符定义的变量属于局部变量

变量类型

ECMAScript变量的值分两种类型:基本类型值和引用类型值

基本类型值:简单的数据段

引用类型值:由多个值构成的对象

存储基本类型值的数据类型有:Undefined、Null、Boolean、Number、String

PS:JavaScript不支持任何自定义类型

基本类型值和引用类型值的区别:

①引用类型值可以动态的添加属性,而基本类型值则不可以

②基本类型值复制时是创建新的副本进行赋值,而引用类型值复制的是一个指针,还是指向原来的值

③在给函数传递参数时,赋值方式与变量赋值原理相同

检测类型

因为Javascript是松散类型的,所以需要一种机制来检测给定变量的类型,检测方法有两种:

基本类型检测用typeof操作符

引用类型检测用instanceof操作符

undefined类型

undefined类型,只有一个值即undefined,在使用var定义变量但不初始化时候,这个变量默认值就是undefined值。需要注意的是包含undefined值的变量与尚未定义的变量是不一样的。对于尚未定义的变量只能进行一项操作,即使用typeof操作来检测其类型,但是对于尚未定义的变量和未初始化的变量执行typeof操作符,它们返回的结果是一样的,都是undefined值

null类型

null类型,也只有一个值,即null。从逻辑上讲null值表示一个空对象指针。所以检测它类型时返回"object"

    var car=null;
    alert(typeof car);

如果定义的变量,将来用于存储对象,最好将它初始化为null

boolean类型

boolean类型是Javascript中使用最多的一种类型,它只有两个值:true和false,但它们不一定等于1和0

虽然boolean类型只有两个值,但是JavaScript中的所有类型都可以与这个两个值进行转换后等价,可以调用转型函数来完成

可以对任何数据类型的值调用转型函数Boolean(),返回结果取决于要转型的数据类型和实际值,规则如下:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 空字符串
Number 任何非0数值(包括无穷大) 0或Nan
Object 任何对象 null
Undefined N/A(不实用) Undefined

理解这些转换规则对于控制流程语句至关重要

number类型

number类型采用了IEEE754格式来表示整数和浮点数。各种字面量的表示方法如下

①十进制

var intNum=55;  //十进制整数,和我们日常一样的用法

②八进制

var octalNum1=010; //前导为0,八进制表示法,如果超出范围前导0被忽略
var octalNum2=079 //实际被解析为79

③十六进制

var hexNum1=0xA; //十六进制

需要注意的是,无论是八进制还是十六进制,在进行算术计算时,它们的数值最终都被转换成十进制

关于浮点数的处理

浮点数是必须包含一个小数点的数值,并且小数点后面至少有一位数字,Javascript中存储浮点数的内存空间是存储整数的两倍,并且JavaScript会自动将某些浮点数转换成整数nan

NaN类型

NaN,即非数值(Not a Number)是一个特殊的值,它表示本来要返回数值的操作数却未返回数值。它有两个特点

①任何涉及NaN的操作都被返回NaN

②NaN与任何值都不相等

Javascript定义了一个NaN函数,它接受一个参数,用来确定这个参数是否是:“非数值”

原文地址:https://www.cnblogs.com/tao-zi/p/4086445.html