• 语法》第二章 数据类型


    (本文为阮一峰js标准教程的学习笔记,旨在总结该教程中涉及的知识点大纲及个人所做的一些拓展,方便作为“目录”或者“大纲”复习和查漏补缺,详细内容请参见阮一峰教程原文)


    **************第二章 数据类型*************

    一、概述
    js语言的每一个值都属于某一种数据类型
    ES5六种,ES6七种(新增symbol类型)

    *数值 number (包括整数和小数)
    *字符串 string
    *布尔 boolean  true和false两个值
    *undefined 表示未定义或不存在
        出现场景是:声明变量未赋值,未声明直接引用会报错
    *null  表示空缺,此处应该有一个值,但是目前为空
    *(合成类型概念)对象object
    -(狭义概念)对象object
    -函数function(居然被视作一种数据类型,好吧我妥协,它可以做自定义对象生成器或者工厂函数)
    -数组array


    1、原始类型:number、boolean、string
    2、合成类型:object(一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器)
    3、视作特殊:undefined、null
    4、在不同技术文献中对“对象”的理解:
    *广义“对象”,是出自面向对象编程思想中的一个概念,不局限于某一种编程语言,或者说,在不同的编程语言中都会有对应的语法构造来映射这种思想。
    *js中狭义的对象概念:var a={};这种字面量直接写出的用大括号表示的就是个对象,很容易被小白理解,而不会与其他概念混淆;
    *合成类型"对象"的概念:认为是各种值组合成的集合就是对象,是个合成类型。从该层面,数组,函数,狭义对象都可以被归为这个概念层面上的对象。

    5、狭义的对象和数组是两种不同的值组合方式,而函数是封装了一堆语句、操作,包括值的声明,操作值等。
    6、js把函数当做一种数据类型,可以赋值与传递;
    用该门语言编程,灵活性duang~duang~d
    7、js函数式语言本质【理解不深入】
    8、原始类型的数据(number、string、boolean)也可用对象方式调用属性和方法,他们可以用作对象。

    二、type of运算符
    返回一个值的数据类型
    alert(typeof 8)//number

    1、js有三种方法确定一个值的类型
    *typeof 运算符;
    *instanceof 运算符
    *Object.prototype.toString方法;

    2.+原始类型:数值  字符串 布尔值 分别返回 number string boolean;
    3.+函数: 返回 function;
    4.遇到undefined 返回 "undefined"(返回的是个字符串);
    alert(typeof(typeof v));//string
    5.typeof 可检查是否声明变量而不报错
    if(typeof v==="undefined"){
        alert("v没有定义")
    }

    6、除此之外其他情况都返回object。

    typeof window // "object"
    typeof {} // "object"
    typeof [] // "object"
    typeof null // "object"

    7、数组([])的返回的类型也是object,这表示在JavaScript内部,数组本质上只是一种特殊的对象。
    8、由于历史原因(95版js),导致typeof null 返回object,不是说null就属于对象,本质上null是一个类似于undefined的特殊值。为兼容以前js代码而一直被保留了下来。
    9、typeof 对数组array和狭义对象object都显示object;
    instanceof可区分;

    var a=[],b={};
    a instanceof Array //true
    b instanceof Array //false

    三、null 和 undefined
    1、null 与 undefined含义和用法基本相似,老实说,语法效果几乎没区别。
    2、在if语句中,它们都会被自动转为false,相等运算符(==)甚至直接报告两者相等。

    if (!undefined) {
      console.log('undefined is false');
    }
    // undefined is false

    if (!null) {
      console.log('null is false');
    }
    // null is false

    undefined == null
    // true

    3、谷歌公司开发的 JavaScript 语言的替代品 Dart 语言,就明确规定只有null,没有undefined!
    4、历史遗留问题诞生的undefined和Null (糟糕的95年js)目前null和undefined基本是同义的,只有一些细微的差别。
    5、语言设计时,类比java,null被设计成一个表示”无”的对象,转为数值时为0(根据C语言的传统,null被设计成可以自动转为0。);
    undefined是一个表示”无”的原始值,转为数值时为NaN(是后来又设计的)。

    Number(undefined) // NaN
    5 + undefined // NaN

    Number(null) // 0
    5 + null // 5

    6、JavaScript的标识名区分大小写,所以undefined和null不同于Undefined和Null(或者其他仅仅大小写不同的词形),后者只是普通的变量名。
    7、null:表示空值,该处值现在为空;
    出现场景:

    调用函数时,某个参数未设置任何值,这时就可以传入null。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。
    8、undefined表示“未定义”
    出现场景:
    // 变量声明了,但没有赋值
    var i;
    i // undefined

    // 调用函数时,应该提供的参数没有提供,该参数等于undefined
    function f(x) {
      return x;
    }
    f() // undefined

    // 对象没有赋值的属性
    var  o = new Object();
    o.p // undefined

    // 函数没有返回值时,默认返回undefined
    function f() {}
    f() // undefined

    四、布尔值

    1.俩关键字:false true;
    2、会返回布尔值的运算符
    *二元逻辑:&&且 ||或
    *前置逻辑:!非
    *相等运算符 === !== == !=
    *比较运算符 > < >= <=

    3、js预期某个结构内某位置应该是boolean 会自动转布尔
    4、以下六个可悲转为false,其他true;
    undefined;
    null
    false
    0
    NaN
    ""或''(空字符串)
    5、[]、{}都会被转为true




  • 相关阅读:
    codeforce 1478B B. Nezzar and Lucky Number 找规律 打表 C
    codeforce 1478C C. Nezzar and Symmetric Array 模拟 认真写 C
    Ansible自动化入门
    多线程执行传值
    js 文本框根据开始结束符号控制输入内容(IE)
    update where in 子查询的梗
    Qt中的QThread:使用QSemaphore进行多线程数据同步
    linux服务器下CPU爆满
    linux下磁盘爆满问题排查
    每日一题(算法)
  • 原文地址:https://www.cnblogs.com/xsfx/p/7111930.html
Copyright © 2020-2023  润新知