zoukankan      html  css  js  c++  java
  • 研磨JavaScript系列(一):回归简单

    想要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript就是把数据和代码都简化到最原始的程度。

    JavaScript中的数据是很简单的。简单数据只有undefined、null、boolean、number和string这5种,而复杂数据只有一种,也就是object。

    JavaScript中的代码只体现为一种形式,那就是function。

    注意:以上单词均为小写的,不要和Number、String、Object、Function等JavaScript内置函数混淆了。

    在JavaScript中,我们可以使用typeof运算符,来获取元素的类型。由于typeof是运算符,因此,在JavaScript中有两种等价的写法。

    1 typeof x
    2 typeof(x)

    typeof(x)运算后的结果是一个string类型的值。

    1 typeof 123                        //结果是number
    2 typeof true                       //结果是boolean
    3 typeof "i love javascript"        //结果是string
    4 typeof(undefined)                 //结果是undifined
    5 typeof(null)                      //结果是object,但是null并非object,具有null值得变量也并非object
    6 typeof(NaN)                       //结果是number
    7 typeof(infinity)                  //结果是number

    先来说说简单数据类型吧。

    undefined   代表一切未知事物,啥都没有,无法想象,代码也就无法处理了。
    null 有那么一个概念,但没有东西。无中似有,有中似无。虽难以想象,但已经可以用代码来处理了。
    boolean 是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控制代码流程。
    number 线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代和循环等。
    string 面向人类的理性事物,而不是机器信号。人机信息沟通,代码据此理解人的意图等功能,都靠他了。

    在JavaScript中,为了进一步简化代码,JavaScript还在这些简单数据上,再规定了一些特殊的含义。这些含义可以使得JavaScript的语句写的更简洁。但是这些特殊含义有时候也会给我们设下难以琢磨的陷阱。

    例如:undefined、null、""、0这四个值转换为逻辑值后都是false。除了这四个家伙,再加上false本身之外,其他任何东西(包括简单类型值、所有对象和函数)转换成逻辑值都是true。然而有趣的是undefined、null、""、0、false这五个家伙中,除了undefined == null,其他的他们却又互不相等。使用这些规定,我们可以编写出更简洁的逻辑判断语句。

    再比如:完全有数字组成的字符串与该字符串表示的值是相等的。也就是说

    1 "123" == 123       //结果是true

     但是

    1 0123 != "0123"     //结果是false

    这又是为什么呢?

    因为,在JavaScript中,JavaScript引擎将"0"开头的整数常量当作是八进制数处理,所以0123其实是个八进制数。然而"0123"是按照十进制来转换成数值的,自然就不会想等了。

    那么,如果我们不想让"123" == 123该怎么办呢?对了,JavaScript提供了一个"==="的运算符,那就是全等运算符。它的含义是不但这两个变量的值需要想等,这两个变量的数据类型也必须相同。也就是说

    1 typeof(123 === "123")      //结果是false

     由此,我们引申出了另一个运算符,那就是"!==",他就是不全等运算符。

    注意:"不全等"与"全不等"是两个概念哦。

    "!=="这种不全等表示为以下这样的等价逻辑

    1 A != B || typeof A != typeof B

     然而,全不等表示的等价逻辑应该是

    1 A != B && typeof(A) != typeof(B)

    不过,在编写程序时,基本上遇不到"全不等"这样的判断,因此JavaScript也就没有专门的运算符了。

    所谓简单类型都不是对象,JavaScript没有将对象化的能力赋予这些简单类型。直接被赋予简单类型的常量值得标识符、变量和参数都不是一个对象。

    所谓对象话能力,就是可以将数据和代码组织成复杂结构的能力。JavaScript中只有object类型和function类您贵姓提供了对象化的能力。

    文章声明本文部分内容参考自《悟透JavaScript》,这是一本学习JavaScript非常好的书。

  • 相关阅读:
    两个有序链表的合并
    Perl学习笔记
    生信-基本概念
    生信-序列比较dp[未完成]
    PAT 1091 Acute Stroke [难][bfs]
    PAT 1038 Recover the Smallest Number[dp][难]
    PAT 1078 Hashing[一般][二次探查法]
    PAT 1122 Hamiltonian Cycle[比较一般]
    PAT 1151 LCA in a Binary Tree[难][二叉树]
    PAT 1148 Werewolf
  • 原文地址:https://www.cnblogs.com/HLiang/p/return_to_simple.html
Copyright © 2011-2022 走看看