• 关于Js(五)------ js的基本类型有哪些?引用类型有哪些?null和undefined的区别。


     基本类型:Number,String,Boolean,Null,undefined。

     引用类型:Object,Array,Date,RegExp,Function

    Object本质上是由一组无序的名值对组成的。

    ECMAScript中用var关键字来定义变量,因为js是弱类型的,所以无法确定变量一定会存储什么值,也就不知道变量到底会是什么类型,而且变量的类型可以随时改变。

    这就是ECMAScript是松散类型的来由,所谓松散类型就是可以用来保存任何类型的数据。

    es6中新增了let命令来声明变量、const命令声明一个只读的常量。let的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。const一旦声明,常量的值就不能改变。

    typeof 操作符

    由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
    通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)
    undefined ---------- 如果值未定义 Undefined

    boolean ---------- 如果这个值是布尔值 Boolean

    string ---------- 如果这个值是字符串 String

    number ---------- 如果这个值是数值类型 Number

    object ---------- 如果这个值是对象或null Object

    需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。

    1. alert(typeof null); // "object"
    2.  
      alert(typeof function () {
    3.  
      return 1;
    4.  
      }); // "function"
    5.  
      alert(typeof '梦龙小站'); // "string"
    6.  
      alert(typeof 1); // "number"
    7.  
      alert(typeof a); // "undefined"
    8.  
      alert(typeof undefined); // "undefined"
    9.  
      alert(typeof []); // "object"

    Undefined

     null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

    Undefined类型只有一个值,即特殊的undefined在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。不过,一般建议尽量给变量初始化,但是在早期的js版本中是没有规定undefined这个值的,所以在有些框架中为了兼容旧版浏览器,会给window对象添加undefined值。

    window['undefined'] = window['undefined'];  
    //或者
    window.undefined = window.undefined;  

    Null

    Null类型是第二个只有一个值的数据类型,这个特殊的值是null从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回object的原因。

      var car = null;
      console.log(typeof car); // "object"

    如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用了。
    例如:

      if(car != null){
        //对car对象执行某些操作
      }

    实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。

    console.log(undefined == null); //true

    尽管null和undefined有这样的关系,但它们的用途完全不同。无论在什么情况下都没有必要把一个变量的值显式地设置为undefined,可是同样的规则对null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。

     
  • 相关阅读:
    ExecutorService与Executors例子的简单剖析
    java中线程队列BlockingQueue的用法
    mysql常用语句
    dubbo+zookeeper例子
    大型网站架构系列:消息队列(二)
    大型网站架构系列:分布式消息队列(一)
    什么是Code Review(转)
    Ehcache 整合Spring 使用页面、对象缓存
    java 多线程——quartz 定时调度的例子
    Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  • 原文地址:https://www.cnblogs.com/huangqiao/p/9481058.html
Copyright © 2020-2023  润新知