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循环的数组。

原文地址:https://www.cnblogs.com/bella-young/p/6625412.html