慕课网JavaScript深入浅出学习笔记之数据类型

JavaScript数据类型

六种数据类型(五种原始类型,一种对象类型)

  • number
  • sttring
  • boolean
  • null
  • undefined
  • object #对象
    • Function
    • Array
    • Date
    • ...

javascript数据类型是弱数据类型,在定义变量时无需指定数据类型。

var num = 32;
num = "this is a string";

32 + 32  // 64 #加法运算
//"+"理解为字符串拼接,"-"理解为减法运算
"32" + 32 // "3232" # 字符串拼接
"32" - 32 // 0 # 减法运算

隐式转换

巧用“+”/"-"规则转换类型

var num = "string";
num - 0 //将num对象转换为number

var num = 123;
num + "" //将num对象转换为string

a === b #严格等于

  • 首先判断类型,类型不同,返回false
  • 类型相同:
  • number //数值一样
  • string //长度和内容都一样
  • null === null
  • undefined === undefined
  • NaN != NaN //NaN跟任何东西比较都不相等,包括跟自己比较。
  • new object != new object //就算是两个空对象,也不相等。
  • [1, 2] != [1, 2] //内容相同,顺序一样,也不相等,因为她们不是完全相同的对象
  • JavaScript中,对象的比较是用引用去比较的

a == b #等于

  • 类型相同,同===
  • 类型不同,尝试类型转换再比较:
  • null == undefined //true
  • number == string //尝试把string转number,1 == "1.0"为true
  • boolean == ? //boolean转number,true = 1, false = 0
  • object == number | string //尝试把对象转为基本类型 new String(‘hh‘) == ‘hi‘ //true
  • 其他:false

包装对象

var str = "string"; //string类型
var strObj = new String("string"); //对象类型,string对应的包装类
str.length //str为基本类型,没有属性。当str访问length属性时,javascript会把基本类型转换为对应的包装对象

类型检测

typeof

{%note danger%}适合检测基本类型和function,遇到null失效{%endnote%}

typeof 100    "number"
typeof true     "boolean"
typeof function   "function"
typeof(undefined)  "undefined"
typeof new Object()   "object"
typeof [1, 2]           "object"
typeof NaN           "number"
typeof null         "object" #返回object而不是null,是由于历史原因

instanceof

instanceof操作符是基于原型链去判断,用法:obj instanceof Object

注意: 不同的window或iframe之间的对象类型检测不能使用instanceof!

{%note danger%}可以用来检测自定义对象以及原生对象{%endnote%}

[1, 2] instanceof Array === true
new Object() instanceof Array ===false

Object.prototype.toString.apply()

{%note%}适合内置对象和基本类型,用来检测null会存在兼容性问题{%endnote%}

Object.prototype.toString.apply([]); === "[object Array]"
Object.prototype.toString.apply(function(){}); === "[object Function]"
Object.prototype.toString.apply(null); === "[object Null]"
Object.prototype.toString.apply(unfefined); === "[object Undefined]"

IE6/7/8 Object.prototype.toString.apply(null); 返回"[object Object]"

原文地址:https://www.cnblogs.com/joycessh/p/8724938.html

时间: 2024-08-14 07:32:45

慕课网JavaScript深入浅出学习笔记之数据类型的相关文章

慕课网 万能适配器学习笔记

首先再次感谢 慕课网的技术大牛分享了该课程. 一.传统 ListView 适配器的模式:1. 创建Listview,并为listview 创建item布局2.封装数据 3.为Item布局创建特定的适配器 用于数据展示.(在这过程中,如果某一个ListView 的item中控件过多,控件的生命及调用会导致代码量上升,而如果一个app中有很多个地方需要用到ListView 时,需要分别写多个适配器,会导致很多重复性的操作,为了避免这种情况的发生,让编码更轻松,可参考 慕课网Android万能适配器

慕课网-软件测试基础-学习笔记

测试阶段 单元测试 定义 对软件的最小可测试单元进行测试(函数.模块) 原则 1. 尽可能保证测试用例是相互独立 反面教材: 2. 一般由代码的开发人员负责(保证所开发的代码符合自己的设计) 益处 1. 能够尽可能早地发现缺陷(越早发现,代价越低) 2. 有利于重构(软件开发不变的就是重构) 3. 有利于简化集成 (通过单元测试,保证小的单元模块的正确性和稳定性,从而在集成测试的阶段,能够将精力聚焦于模块之间的关系上) 4. 文档(现代敏捷测试,推崇减少文档,利用单元测试,生成"代码文档&quo

Spring3.0官网文档学习笔记(五)--3.3

3.3 概述 Table 3.1. The bean definition Property Explained in... class Section 3.3.2, "Instantiating beans" name Section 3.3.1, "Naming beans" scope Section 3.5, "Bean scopes" constructor arguments Section 3.4.1, "Dependen

Struts2.X深入浅出 学习笔记

第一节.MVC以及Struts2简介 第二节.Action生命周期以及接收表单数据 第三节.Struts2配置以及Struts.xml详解 Struts2 主要配置文件 ? 1 2 3 4 5 Web.xml 设置过滤器以及annotation初始化参数 Struts.xml 主配置文件 Struts.properties 默认属性文件 Struts-default.xml 默认配置文件 Struts-plugin.xml 插件配置文件 Struts2 主要配置加载次序 ? 1 2 3 4 5

Spring3.0官网文档学习笔记(六)--3.4.1

3.4 依赖 3.4.1 依赖注入 依赖注入两种方式:基于构造器的DI.基于setter方法的DI. 3.4.1.1 基于构造器的DI 参数是引入对象,且之前不存在父-子类关系: package x.y; public class Foo { public Foo(Bar bar, Baz baz) { // ... } } <beans> <bean id="foo" class="x.y.Foo"> <constructor-arg

Spring3.0官网文档学习笔记(七)--3.4.2

3.4.2 依赖与配置的细节 3.4.2.1  Straight values (primitives, Strings, and so on) JavaBeans PropertyEditors被用来转换这些value到实际的类型.? <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <

Spring3.0官网文档学习笔记(四)--3.1~3.2.3

3.1 Spring IoC容器与Beans简介 BeanFactory接口提供对任意对象的配置: ApplicationContext是BeanFactory的子接口,整合了Spring Aop功能,消息资源控制,事件发布,应用层特殊的上下文(在web应用中) 由IoC容器实例化.组装.管理的对象都是Bean 3.2 容器概述 org.springframework.context.ApplicationContext代表Spring IoC容器,并且负责通过读取配置元数据来实例化.配置.组装

慕课网javascript动画特效 多透明度 源代码

慕课网javascript动画特效 多透明度 源代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>多物体运动</title> <style> div{ width:200px; height:100px; background:yellow; margin-bottom: 20px; filte

Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6

3.4.3 使用depends-on 使用depends-on可以强制使一个或多个beans先初始化,之后再对这个bean进行初始化. 多个bean之间用",".";"." "隔开. <bean id="beanOne" class="ExampleBean" depends-on="manager"/> <bean id="manager" cla