简述 ES5 的数据类型

JavaScript020

简述 ES5 的数据类型,第1张

      本期就是简述下关于ES5的数据类型。

      首先说es5的数据类型,es5呢就是现阶段活跃在各大浏览器上的js的标准。ES是javascript的标准,而各大浏览器上的js呢是实现,只不过是各个浏览器的厂商对这个实现的不同而已,也造就了浏览器兼容性的问题。

        好了话题扯回来先,ES5的数据类型分为简单数据类型和复杂的数据类型,简单的数据类型分为undefined,null,boolean,number,string。其中比较特殊的是undefined 与 null,已声明未初始化的变量默认为undefined类型,而null更像一个指针,typeof会显示为object类型。

         boolean表现的是真和假,true或者false,对于其他类型的转换是任何非空字符串可以转化为true;任何非0和NaN的数字转化为true;任何对象都是true;值得一说的是null转化为false,而undefined不等价于true也不等价于false,但是!undefined却等价于true。

         数字类型number,具体细分的话还分为整数和浮点数,计算机中数字有一个具体的范围,超过这个最大范围会被解析为Infinity,小于这个最小范围被解析为-Infinity,至于这个具体的范围 5e-325 ~1.7976931348623157e+308(具体没有去看工具书什么的验证),而数字类型中最特殊的是NaN,NaN是啥呢,NaN就是一个自己都不等于自己的货,具体什么会被转化为NaN呢,转化为数字类型的undefined,不包含整数,浮点数,其他进制的数的非空字符串转化为数字时会变成NaN,至于对象呢就是用valueOf和toString方法转化成字符串在转换,说白了就是尽量转化成数字而非NaN,毕竟这是个自己跟自己对着干的主。

          String就是字符串,这个简单易懂,但是它呢包含这一些转义字符,这就尴尬了,你在处理的时候就必须得考虑到转义字符的问题,n(换行符),t(制表符),b(空格符),r(回车符),f(进纸符),\\(斜杠),\'(单引号),\"(双引号),xnn(16进制表示的一个字符),unnn(16进制表示的一个unicode符);字符串的转换,其实就在于toString,具体的可以添加参数,转变成不同进制,当然还有一些强制类型转换上存在的不同。

         最后说到复杂的数据类型,object,可以说是一组属性与方法的集合,它可以是数组,json,还可以是function,关于属性和方法的扯淡呢,可以扯到原形链,这个要扯很多,暂时先不说,单说对象(主要是不想码太多字);对象是对一个内存地址的占用,凡是以对象赋值的变量都是对对象的地址的引用,只有以同一个对象赋值的两个变量才相等,否则它就是两个不同内存地址的引用,根本不存在可比性。至于对象中的值的引用,不同的对象有不同的方法,下标或者其他。

ES5 即ECMAScript5 ,是javascript的语言的标准的一版。

相当于C++98,C++11这类的标准,定义了javascript语言本身的一些规则和函数……

既然她是标准中的一版,那么说明还有其他的标准,推荐看一篇文章

ES5, ES6, ES2016, ES.Next: JavaScript 的版本是怎么回事?「译」

http://huangxuan.me/2015/09/22/js-version/

es6

import ... form...替代 require()

//不接收对象 require:require('s.css')//(es5)improt  's.css' //(es6)//接收对象var o = require('s.js')//es(5)import o form s.js    //(es6)

对象的写法

导出一个模块对象(es5):

module.exports={

add:add,    sub:sub}

导出一个模块对象(es6):module.exports={

add,    sub}

注意:这种写法属性名和属性值变量是同一个,否则要分开写module.exprots={

addFn:add,    sub}  

一个对象中方法的写法

//es5module.exports={

addFun:function(x,y){        return x+y

}

}//es6module.exports={

addFun(x,y){        return x+y

}

}

导出对象的写法

calc.js中有两个函数:

function add(){}

function sub(){}

//写法一

es5写法:

module.exports.add = add

module.exports.sub = sub

使用:

var calc = require('./calc.js')

es6写法:

exprot function add(){}

exprot function sub(){}

//写法二

es5:

module.exports = {add:add,sub:sub}

es6:

exprot default{

add,sub}

//表示取得calc.js中所有暴露出来的对象(es6)import calc from './calc.js'

//只获取到calc.js中的add方法(按需获取)import {add} from './calc.js'

用export 和import 的写法注意点

1、如果模块中是使用 export default {} 方式导出的对象

只能通过  import 对象名称 from '模块路径'

不能通过  import {对象名称} from '模块路径'2、如果就想要import {对象名称} from '模块路径'通过这种方式来按需导入对象中的某个属性

那么应该使用 export 跟着要导出的对象或者方法名称    export function add(){}    export function substrct(){}

那么就可以使用:    import {add,substrct} from '模块路径'

只需要直接使用 add()方法即可

注意这里不能直接使用:  import cacl from '模块路径' 这种方式导入,会报错