zoukankan      html  css  js  c++  java
  • javascript面向对象编程笔记(基本数据类型,数组,循环及条件表达式)

    javascript面向对象编程指南

    最近在看这本书,以下是我的笔记,仅供参考。

    第二章 基本数据类型、数组、循环及条件表达式

    2.1 变量

    区分大小写

    2.3 基本数据类型

    1. 数字:包括浮点数与整数

    2. 字符串:一序列由任意数量字符组成的序列

    3. 布尔值:true或false

    4. undefined:试图访问一个不存在的变量,会得到一个特殊值undefined;使用一个未初始化的变量也会如此,javascript会自动将变量在初始化前值设定为undefined

    5. null:另一种只包含一个值的特殊数据类型。所谓的null值,通常是指没有值、空值,不代表任何东西。

      注意:null与undefined最大的不同在于,被赋予null的变量通常被认为是已经定义了的,只不过它不代表任何东西。

      任何不属于上述五种基本类型的值都会被认为是一个对象。

    2.3.1 typeof 查看类型操作符

    typeof:查看类型操作符,返回一个代表数据类型的字符串,它的值包括:“number”、“string”、“boolean”、“undefined”、“object”、“function”。

    2.3.2 数字
    • 八进制:数字以0开头

    • 十六进制:用0x前缀表示一个十六进制值(简称为hex)

    • 指数表示法:1e+1 表示数字1后面加一个0,也就是10

      也可以这样理解:2e+3为数字2的小数点向右移三位
      2e+3 -> 2.0.0.0.->2000
      同理2e-3为数字2的小数点向左移三位
      2e-3 -> 0.0.0.2.->0.002

    • Infinity:代表超出了javascript处理范围的数值,但Infinity依然是一个数字。

      1e+309->Infinity
      1e+308->1e+308

      另外,任何数除0也为Infinity。Infinity表示的是最大数(或比最大数还要大的数),Infinity前加一个负号,表示最小数(比最小数还要小的数)

      Infinity-Infinity->NaN
      -Infinity+Infinity->NaN

      而且,Infinity与其他任何操作数执行任何算术运算结果都是Infinity。

    • NaN(not a number)

      typeof NaN->"number"

      如果在对一个假定的数字执行某个操作时失败,会得到一个NaN。
      var a=10*"f";->NaN

      而且NaN是具有传染性的,只要算术运算中存在一个NaN,整个运算就会失败。
      1+2+NaN -> NaN

    2.3.2 字符串

    一对单引号或者双引号之间的任何值会被视为一个字符串。两个字符串之间使用加号是一个字符串拼接操作,返回是两个字符串拼接之后的结果(最好确保所有操作数都是字符串)。

    • 字符串转换

        >>>var s='1';s=3*s;typeof s;
        "number"
        >>>s
        3 
        >>>var s='1';s++;typeof s;
        "number"
        >>>s
        2
        //数字字符串转换为数字(更好是调用parseInt函数)
        >>>var s='100';s++;typeof s;
        "string"
        >>>s=s*1;
        101
        >>>typeof s;
        "number"
        //转换失败
        >>>var d='101 dalmatians';
        >>>d*1
        NaN
        //其他类型转换为字符串
        >>>var n=1;
        >>>typeof n;
        "number"
        >>>n=""+n;
        "1"
        >>>typeof n;
        "string"
      
    2.3.4 布尔值

    两种值:true和false

    • 逻辑运算符:! && ||

    • 除下列特定值(falsy)以外(它们将被转换为false),其余大部分值(truthy)在转换为布尔值时都为true。

        空字符串“”
        null
        undefined
        数字0
        数字NaN
        布尔值false
      
    • 惰性求值:连续的逻辑操作中,操作结果在最后一个操作完成之前就已经明确了的话,该操作往往不必再继续执行了,因为不会对最终结果产生任何影响。

    • 在一个逻辑表达式中遇到一个非布尔型的操作数,那么该操作数的值会成为该表达式所返回的结果。

        >>>true||"something"
        true
        >>>true&&"something"
        "something"
        不确定某个变量是否已经被定义:var mynum=mynum||10;
      
    • 比较运算符

      注意:NaN == NaN值为false

    2.3.5 undefined与null

    访问某个不存在或未赋值的变量时会得到undefined值。javascript会自动将声明时没有进行初始化的变量设为undefined。

    //试图使用一个不存在的变量,会得到这样错误信息
    >>>foo
    foo is not defined
    >>>typeof foo
    "undefined"
    //声明一个变量时没对其赋值,调用该变量时不会出错,但typeof仍为undefined
    >>>var somevar;
    >>>somevar
    >>>typeof somevar
    "undefined"
    

    而null值完全是另外一回事,它不能通过javascript来自动赋值,只能由我们的代码来完成。

    >>>var somevar=null;
    null
    >>>somevar
    null
    >>>typeof somevar
    "object"
    

    尽管两者差别微乎其微,但有时也很重要。

    >>>var i=1+undefined;i;
    NaN
    >>>var i=1+null;i;
    1
    

    这是因为null和undefined在被转换为其他基本类型时,方法存在一定区别。

    转换成数字:
    >>>1*undefined
    NaN
    >>>1*null
    0
    
    转换成布尔值:
    >>>!!undefined
    false
    >>>!!null
    false
    
    转换成字符串
    >>>""+null
    "null"
    >>>""+undefined
    "undefined"
    
    >>>undefined == null 
    true
    

    2.5数组

    声明一个空数组变量:

    >>>var a=[];
    >>>typeof a;
    "object"
    >>>var a=[1,2,3];
    输入数组名,就能打印该数组中的所有内容
    >>>a
    [1,2,3]
    访问数组a首元素
    >>>a[0]
    1
    
    2.5.1增加、更新数组元素
    //更新
    >>>var a=[1,2,3];
    >>>a[2]='three';
    >>>a
    [1,2,"three"]
    
    //新增
    >>>a[3]="four";
    "four"
    >>>a
    [1,2,"three","four"]
    

    如果新元素被添加的位置与原数组末端之间存在一定的间隔,那么之间的元素将会被自动设定为undefined值。

    >>>var a=[1,2,3];
    >>>a[6]='new';
    "new"
    >>>a
    [1,2,3,undefined,undefined,undefined,"new"]
    
    2.5.2删除元素

    delete操作符:不能真正移除一个元素,但它能将其设定为undefined。元素被删除后,数组的长度并不会受到影响。

    >>>var a=[1,2,3];
    >>>delete a[1];
    true
    >>>a
    [1,undefined,3]
        >>>a.length
        3
    
    2.5.3 数组的数组

    通常情况下,我们可以在数组中存放任何类型的值,包括另一个数组。

    >>>var a=[1,"two",false,null,undefined];
    >>>a
    [1,"two",false,null,undefined]
    >>>a[5]=[1,2,3];
    [1,2,3]
    >>>a
    [1,"two",false,null,undefined,[1,2,3]]
    >>>a[5][1]
    2
    
    //可以通过这种访问数组方式来获取某个字符串中的特定字符
    >>>var s='one';
    >>>s[0];
    "o"
    >>>s[1];
    "n"
    

    2.6 条件与循环

    • if条件表达式

      检查变量是否存在

        检查程序中是否存在一个叫做somevar的变量,如果存在,就将变量result设置为yes。
        >>>var result='';
        >>>if(somevar){result='yse';}
        somevar is not defined
        >>>result;
        ""
      

      说明:首先,该段代码会产生一个警告信息,显得有些多次一举;其次,就算if(somevar)返回的是false,也并不意味着就一定没有定义,它也可以是任何一种被初始化为falsy值(如false或0)的已声明变量。

      所以在检查变量是否存在时,更好的选择是使用typeof。

        >>>if(typeof somevar!=="undefined"){result='yes';}
        >>>result;
        ""
      

      需要注意的是,如果这里的somevar是一个已经声明但尚未赋值的变量,结果也是相同的。也就是说,实际上是在用typeof测试一个变量是否已经被初始化(或者说测试变量值是否为undefined)。

        >>>var somevar;
        >>>if(typeof somevar!=="undefined"){result='yes';}
        >>>result;
        ""
        
        >>>somevar=undefined
        >>>if(typeof somevar!=="undefined"){result='yes';}
        >>>result;
        ""
      

      三元运算符:var result=(a===1)?"a is one":"a is ont noe";

    • switch语句

    • while、do-while、for,以及for-in循环。
      for-in循环最适合的场合是对象以及常规for循环的数组。

  • 相关阅读:
    百度笔试题:找最小的不重复数
    [置顶] 【收藏】实用软件
    指针数组与数组指针
    根据新浪天气API获取各地天气状况(Java实现)
    项目经历——EasyUI的检索和更新操作
    利用MyEclipse配置S2SH三大框架篇-Spring配置
    Intellij IDEA 最头大的问题,如何自定义注释模板?
    Spring Cloud Gateway VS Zuul 比较,怎么选择?
    Spring Boot 注册 Servlet 的三种方法,真是太有用了!
    Spring Cloud Eureka 常用配置详解,建议收藏!
  • 原文地址:https://www.cnblogs.com/bella-young/p/6625412.html
Copyright © 2011-2022 走看看