javascript数据类型详解

    xiaoxiao2023-11-25  142

    数据类型

    基本数据类型(值类型) Number string Boolean null undefined(js独有)引用数据类型 对象object 普通对象 数组对象 正则对象 日期对象函数functionES6新增加的一个特殊类型symbol Number中的NaN不是一个数字 var o={name:’yue’,age:23} 普通对象 包含多组属性名属性值 var ary=[1234] 数组对象 var reg=/-?(\d|([1-9]\d+))(\.\d+)?/g;由元字符组成一个完整的正则 [Symbol] 创建出来的是唯一的值 var a =Symbol(‘a’); var b =Symbol(‘a’); a==b =>false 是唯一的所以错了。 const a=Symbol(‘flag’); a变成一个不可更改的唯一的变量 这个值非常重要

    typeof null的输出结果是object。null表示一个空指针对象

    js代码如何被运行,如何输出结果

    【如何被运行】
    把代码运行在浏览器内核中(浏览器内核来渲染解析)基于NODE运行(NODE也是一个基于V8引擎渲染和解析JS的工具) 可以理解成一个长得不像浏览器的浏览器。NODE不是一门语言,一个具备V8引擎的工具。JS才是后台。不过是解析服务端。node.js中文网。 (视频里有介绍 用CMD)
    【如何输出结果】
    alert();基于alert输出都是字符串,先用toString转换成字符串再输出。 alert([12,23]);=>12,23; alert({name:’xxx’});=>[Object Object]’; 原因? !!!!!!alert结果一定要加字符串!!!!! comfirm():和alert用法一样,只不过提示的框有确定和取消两个按钮。所以它是确认提示框。 var flag=confirm(‘确定要退出吗’)if(flag) { }else{ }; prompt:在comfirm的基础上增加输入框。这个很少用了console.log:在浏览器控制台输出日志,按fn+f12打开 Elements:当前页面中的元素和样式在这里都可以看到,还可以调节样式修改结构等。 左上角点击按delete删除小广告Console:控制台可以在js代码中通过.log输出到这里,也可以直接在这里编写js代码Sources:当前网站的源文件都在这里… console.dir:比log输出更加详细,尤其是输出对象数据值的时候conslole.table:把一个json数据按照表格方式输出
    【思考题】

    更多console输出方法 许多大公司在网站的console里都有招聘信息

    number详细解释

    NaN:not a number

    isNaN检测是否是有效数字

    监测机制:

    首先验证当前要监测的值是否是数字类型,如果不是浏览器会默认把值转化为数字类型。number(); number可以转化boolean值,parseInt不可以。当前监测的数字已经是数字类型,有效数字返回false,无效返回true 数字类型中只有NaN不是有效数字如果检测对象是对象,那先把对象用toString转化为字符串,再转化为数字 比如[] isNaN([])=>false 因为[]=>''=>0 isNaN([12])=>false

    错的。这个条件永远不成立,NaN和谁都不相等,即使num确实不是有效数字。要用isNaN(num)监测是否为有效数字只有这一种方法,所以非常重要! NaN===NaN错误,和谁都不相等

    parseInt和parseFloat

    和number有区别

    出现任何非有效数字字符就是NaNparse从左边开始查找有效数字,到第一个非数字结束

    布尔类型详细解释

    【何把其他类型转化为布尔类型】 Boolean: !XX 先把一个转化为布尔类型再取反 !!XX 取两次反和Blooean无区别,一般就用两个叹号,因为方便 只有’’ undefined NaN null 0五个值是false,其余都是ture

    null和undefined

    null:空 意料之中的没有,一般都是人为手动地赋值为null,后面程序中会再次给他赋值undefined:未定义 代表一般都不是人为手动控制,大部分都是浏览器自主为空,后面可以赋值或不赋值 的 对象的布尔类型都是true

    Object对象数据类

    普通对象 -由大括号包裹起来的 -由0到多组属性名和属性值(键值对)组成

    var obj={ name:'wangyue'; age:9 }; //对象的操作 【获取】 obj.name; obj['name'];一般来说对象的属性名都是字符串格式,属性值不固定,注意引号 【增/改】 js对象中属性名不允许重复,是惟一的 obj.name='liuyuan'//原有对象中有name属性,修改 obj.sex='male'//原有对象中不存在sex,增加 【删】 彻底删除:对象中不存在这个属性 delete obj['age']; 假删除:并没有移除这个属性,至少让当前属性为空 obj.sex=null;

    思考题:

    var obj={ name='wangyue', age=9 }; var name='liuyuan'; obj.name =>'wangyue' 获取的是name属性的值 obj['name'] =>'wangyue' 同上 obj[name] =>此处的name是一个变量即obj['liuyuan'],结果是undefined 'name'和name的区别? =>'name'是一个字符串值 =>name是一个变量,不是值,代表的是其存储的这个值

    引号一定要加,不加name就变成一个变量了,变量有自己的值!

    数组也是一个对象

    var obj={ name='wangyue', 0:100 }; obj[0]; =>100 obj.0 =>SyntaxError

    键为数字时必须用中括号! 那如果用布尔类型做键呢

    obj[true]=200; obj; =>{0:100,name:'wangyue',true:200} obj[true] =>200 可以 obj[null]=300 可以 obj[undefined]=400可以 obj[{}]=500; 先把{}.toString()的结果【object object】当做对象属性名存储起来!!!!获取的时候也一样 obj;=>{0:100,name:'wagyue',true:200,null:300,undefined:400,[object object]:500}

    -当我们存储的属性名不是字符串也不是数字的时候,浏览器会把这个值转化为字符串(toString)然后再进行存储。 -所以当key为对象是不可靠,因为任何对象都会成为【object object】,obj[{xxx=‘xxx’}],obj[{}]都一样

    var ary=[12,23,34]; /*{ 0:12, 1:23, 2:34, length:3 }*/
    最新回复(0)