首先说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 '模块路径' 这种方式导入,会报错