javascript数据类型及部分特性

    xiaoxiao2023-10-19  157

    javascript数据类型分为:

    原始类型(基础数据类型) 引用数据类型(对象类型)

    原始类型(基础数据类型):

    boolean 布尔 true false undefined,null,0(包括+0,-0),NaN,false 使用Boolen( )为false

    Undefined类型: 表示找不到,未定义 只有一个值undefined

    Null类型 : null 表示一个空的值 只有一个值null 有的人设变量时,会把null当做默认值或初始值,避免值为undefind

    Number类型 数字类型:

    NaN NaN不是数据类型,是一个特殊值 特性: NaN不等于自身 例如: console.log( NaN===NaN); 返回false

    正无穷 Infinity 最大值:Number.MAX_VALUE

    负无穷 -Infinity 最小值:Number.MIN_VALUE

    正常数字 123等

    指数 长度为11个二进制位,意味着指数部分最大值为2047

    数字的部分特性:

    1.js内部,所有数字都是以64位浮点形式储存,即便整数也是如此。js底层没有整数,只有小数,所以运算不够精确。

    例如: consloe.log((3.1+3.2)>6.3); 返回值是true

    2.无限接近0 则显示0

    当一个值特别接近0,超过一个界限时,会直接显示0 所以,js中很少用其进行精确运算,很少做大型数据运算。

    例如:

    var x=0.5; for(var i=0;i<25;i++){ x=x*x; } console.log(x); //0

    特殊值: +0 -0 运算出现的结果会不同: 5/0 结果:Infinity 因为0不能作为被除数 5/-0 结果:-Infinity 50 结果:0 5-0 结果:-0

    String类型 (字符串): 简单的说,由单引号和双引号包裹的内容,就是字符串

    \ 转义字符 能屏蔽字符本身的含义 代码一行写不下,可以用转义字符

    var str="1234\ 2345";

    正常情况下,字符串写不下不能直接用回车键换行 换行的话,\n换行符要在一行中

    另一种写法: 字符串拼接:

    var a="123"+ "234"+ "123";

    Symbol (es6新类型): 一种独一无二的字符串,永远不会产生重复现象。 主要针对对象中的key。不能使用new关键字的构造函数运行。 可以在symbol中传入一段参数,用来对这个独一无二的数据起到一个说明的作用。

    作用: 避免命名重复,造成程序出错

    出错例子:

    let obj={ "name":"123", "name":"wan" }

    运行时,不会报错。后面的key把前面的key给覆盖。打印结果:只会显示后一个键值对,前一个消失。

    注意事项: 不能用obj.symbol方式 只能用obj[symbol]

    强型转换: let a=Symbol(); String(a); Bollean(a);

    特性例子:

    let a=Symbol(); let b=Symbol(); console.log(a===b); //false

    因为独一无二

    引用数据类型(对象类型):

    object 对象: { } 无序的键值对的集合 创建一个对象需要{ }来创建 写法:

    {name:"a"}

    创建对象的常用方法:

    1.var obj={ }; 2.var obj={name:"a"}; 3.构造函数创建 var obj=new String( );//创建一个字符串对象

    特性: {name:“a”}与{“name”:“a”}相同,对象的键都会自动转为string类型 键[ ]中不加引号也会被认为是变量 键不能为数字开头的纯数字 对象与对象间的存储空间是不同的 例如: console.log({} === {}) 返回false

    Aarry 数组: 是一种特殊的对象。

    创建数组:

    var arr=[ ] var arr=[123,"qqq"] var arr=new Array() var arr=new Array("123","wa")

    从创建速度还是运行效率来讲,直接量的形式都优于构造函数的形式

    创建的区别: 构造函数创建过程: 1.创建函数 2.查询作用域链 3.创建作用域链 4.将数据写入

    使用直接量创建: 步骤为3步 使用直接量创建,相当于将数据直接写入内存中,速度最快。相当于直接作用在作用域链条内。

    作用域链条: 在ES5中存在两条,一条是var,也就是变量的作用域,另一条是函数声明。

    特性: 在代码的执行过程中优先查找非函数链条。顺序是从上到下。而函数链条顺序从下到上。

    js代码执行时,通过直接量向内存中存储数据的速度是最快的,其次是变量声明,最后是通过函数调用获得的变量。

    数组可自定义下标,但自定义下标后,数组length为0。因为是自定义数组,在执行某些操作时,数组排列会出现混乱。

    稀疏数组: undefined占位(空位),这种索引不连贯的数组,叫做稀疏数组。 例如:

    var arr=[1,2," ","w", ,5,9];

    "w"后面为空位, 索引不连贯

    Function 函数(方法):

    函数(function)是一段可以反复调用的代码块,需要通过名字来进行调用。它能将一些数据(函数的参数)传递进去进行处理,然后返回一些数据(函数的返回值),也可以不返回数据。

    方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,只是比较特殊的函数。

    也就是函数和方法本质上是一样的,只不过方法是函数的特例,是将函数赋值给了对象。

    js中所有的方法都以返回值的形式返回结果

    函数创建: function 函数名(){ } var 函数名=function( ){ }; 匿名函数/函数表达式 var 函数名=new Function( ) ; 构造函数 var 函数名=(形参)=>{ } 箭头函数(ES6/ESMA2015) 箭头函数简写: var 函数名=参数=>返回值 当参数只有一个时可省略() 当函数体中只有一句返回值时,可省略{ }

    构造函数: 功能强大,效率低,速度慢,能创建一切类型,不建议使用创建对象以外其他类型

    参数: 函数的参数不是必须的

    形参: 定义函数时需要传入参数 实参: 实际调用函数时传入的参数

    特性: 实际调用时参数可与设置时的参数个数不等 函数调用时,可省略最后,不用可传空字符串,但不能在中间省略

    例如:

    fn(num,,1)//报错

    作用: 减少代码的复用性 避免造成变量污染

    特性: 一等公民 与string,number等同级。能代替一切进行赋值 函数重复声明,后一个会把之前的覆盖掉 函数都有一个constructor属性,可查看每个对象的构造函数 函数没调用,函数代码体不执行 函数不执行的话,函数内部如果代码书写错误,代码运行也不会报错 函数如果没有返回值,打印( consloe.log( ) )的值为undeifined ()叫做方法也叫API,但并不是所用的方法都叫API

    增加代码安全性的方法: 代码压缩 变量混淆

    Date 日期类型

    Math 数学类型

    RegExp 正则表达式

    原始类型与应用类型的区别:

    原始类型的数据信息都存储于栈(stack)中,引用类型信息存于堆(heep)中。

    引用类型的存储都是拆开的,数据信息存储于堆中,存储于堆中的位置信息存于变量中,变量存储与栈中。

    引用类型可以修改单个值,但原始类型只能整个替换。

    如果把引用类型的地址赋值给变量,修改变量,只是修改地址,并不会对值造成影响。

    寻找顺序: 到栈中找到存储地址的变量,再用该地址去堆中寻找相应的数据 栈中->变量->堆中->数据

    最新回复(0)