关于JS的数据类型的一些见解

关于js里的数据类型这块,小弟说一下个人对它的一些见解,如果有错误希望大家一起帮我纠正

js中的数据类型可以归类两类,

简单数据类型:string,number,boolean,null,undefined

复杂数据类型:object

其实严格说:null是object类型

        alert(10 + ":" + typeof (10));//10:number
        alert("abc:" + typeof ("abc"));//abc:string
        alert("true:" + typeof (true));//true:boolean
        alert("null:" + typeof (null));// null:object
        alert("undefined:" + typeof (undefined));//undefined:undefined

1 各数据类型的默认空值:

string:null,

number:NaN

boolean:false

null:null

undefined:undefined

object:null

 var obj_str = null;//string的默认空对象
 var obj_num=NaN;//number的默认空对象
 var obj_bool = false;//boolean 的默认空对象

但是我们一般都是直接定义:

var obj_str, obj_num, obj_bool;

我们这样声明完了,虽然明白自己想要给他们赋予什么类型,可是为难了js了,js识别不出是什么类型的数据变量,所以 js索性丢一个undefined的默认值给他们。

所以,对于undefined我们可以理解成是:没有类型,也没有值的,说白一点儿就是在内存中根本就不给它分配位置,

undefined 也可以理解成对所有未知,不存在类型和值的对象的总称。

2.undefined和null的的区别:

我们先看一段代码:

  undefined == null ? alert(true) : alert(false);
    //输出:true
  undefined === null ? alert(true) : alert(false);
    //输出:false    

他们两个本身不一样, null就相当于 一个空箱子,而undefined 就相当于什么也没有

如果转化为同一个类型(我喜欢理解成忽略类型),来比较值的话,undefined和null的值是相等的,

undefined 是空对象,null是空值。

就相当于现在去掉类型,就相当于把箱子去掉,然后 他们两个都是什么也没有了,

咱们再看另外一段代码:

 undefined = 1 ? alert(true) : alert(false); 

运行了这行代码,会出现什么结果?

输出结果:true

如果你感觉有些吃惊的话,那你要认真接着看了,

在说上面为什么会输出true之前,我们再看一段代码:

 if (undefined = 1) {
            alert(true);
        }
        else {
            alert(false);
        }

让大家失望了,我只是换了一个写法,这样能看得更明显一些:

输出true是因为 1 转化为boolean时为true,

但是,我想说的是:为什么 undefined=1 不报错呢?

原因是:undefined 虽然和 null他们归为一类,但是undefined可以赋值,

这里我参入一些我个人的看法:

undefined是js内置的空对象,这样,在给它赋值就显得理所当然了,

既然这样,null本身是一个空值,在内存中占据一格的值,那么我们如果给null赋值的话,会不会报错呢?我猜想会报错

带着这种猜想,我运行了下面的代码:

   null = 1 ? alert(true) : alert(false); //报错 

报错!

这也正证实了我们的猜想。

这些是我对js数据类型的一些浅显认知,望多多指教

时间: 2024-10-06 12:19:00

关于JS的数据类型的一些见解的相关文章

JS的数据类型

JS的数据类型大致分为两大块: 1.基本类型 2.引用类型 基本类型分为:number bolean string undefined null 引用类型分为:原生对象 内置对象 宿主对象

node.js对象数据类型

在这里复习下前端JS的数据类型:前端JS中的数据类型: 1.基本/原生/值类型 string.number.boolean.null.undefined 2.引用/对象类型    ES对象类型:String.Number.Boolean.Math.Date.RegExp.Object.Function.Error,Array,Global对象.    BOM对象类型:window.document.screen.history.location.navigator.event...    DOM

JS中数据类型及原生对象简介

js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器对象BOM 4.文档对象类型DOM 5.事件处理模型 将js添加到文档中的方法有三种: 1.内嵌式 2.将js源文件通过<script>元素的src属性连接到XHTML文档中 3.脚本包含在XHTML事件处理属性中,例如onclick js的数据类型分为原始数据类型和引用数据类型: 一.原始数据类

JS的数据类型及转换(还是基础的东西)

朋友说我这是再自娱自乐,我只想说,你说的对????????!其实也不然,这算是我对自己的基础的一次彻底性的重新梳理以及闲的无聊,找点显得比较有意义的事情做罢了. 回归正题,在JS中,数据类型有哪些呢?看看下图 字符串.数字.布尔类型就不细说了,这些大家都懂,说一些大家关注度比较少的东西...... NULL和Undefined: NULL和Undefined一样都只有一个值,并且都是他们本身,但是有一点特别的有意思,那就是: 在W3C里事这样解释这两个东西的: 值 undefined 实际上是从

js的数据类型具体分析

js的数据类型分析 1.基本类型:string·····number···boolean···null···underfied 2.引用类型:·····objck 复习·····点·运算·····xxx.sss····xxx是对象····sss.是方法和属性. 任何数据类型都是拥有属性和方法的 字符串  string····var   st="hello word" 字符串的定义 1 var s="st" 2.st.new string ("hello&q

JS中数据类型、原始数据、内置对象、包装类型对象、typeof

JS中数据类型.内置对象.包装类型对象.typeof关系  https://segmentfault.com/a/1190000018275384 JavaScript 数据类型和数据结构   https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures 原始数据 https://developer.mozilla.org/zh-CN/docs/Glossary/Primitive 原文地址:https://www

js显示数据类型的转换

js中数据类型装换 ### 显示数据类型的转换 typeof:能防回六中操作类型的数据:Number, String, Boolean, Objecet, undefined, function ~JavaScript var a = 1; //conloe.log(typeof(a)) 值为Number var a = []; //conloe.log(typeof(a)) 值为Object var a = {}; //conloe.log(typeof(a)) 值为Object var a

3.2 js六大数据类型

js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型(Object). 前面说到js中变量是松散类型的,因此有时候我们需要检测变量的数据类型.typeof操作符可以检测变量的数据类型(输出的是一个关于数据类型的字符串).返回如下6种字符串:number,string,boolean,object,undefined,function.且看如下例子: var x = 1; console.log(typeof x

js的数据类型及类型转换

Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object. 通常,我们判断变量的数据类型会用到typeof()方法. 数据的转换分为显式类型转换和隐式类型转换,我们经常用到的是将变量转换成字符串或数字.  一:显式类型转换: 1.转换成字符串时: toString() 1 var str= abc; 2 alert(str.toString()); 2.转换成数字时: (1)parseInt() 转换成整数,parseFloat()转换