zoukankan      html  css  js  c++  java
  • JavaScript高级程序设计读书笔记(一)基础概念

    1、区分大小写,关键字保留字

    2、标识符号(变量,函数、属性的名字活着函数的参数名)标识符的规则:首字母不能为数字,其它字符可以是字母,下划线,美元符活着数字

    3、变量是松散类型,可以用来保存任何类型的数据,未初始化的变量会保存一个特殊值undefined

    4、数据类型:基本数据类型和复杂数据类型

    复杂数据类型:object 本质上是由一组无序的名值对组成

    基本数据类型:undefined null nan boolean string number

    undefined

    只有一个值,即特殊值undefined

    null

    只有一个,即特殊值null,是一个空对象的指针

    Boolean

    有两个值true和false

    转换规则:

    (1)除0之外的所有数字,转换为布尔型都是true

    (2)除“”之外的所有字符,转换为布尔型都是true

    (3)null和undefined转换为布尔型都是false

    Number

    整数

    十近制

    八进制:第一位必需是0,然后八进制的数字序列是(0-7),如果字面值超出范围,那么前导0被忽略后面的数值以十进制解析,在严格(strict)模式下无效

    var num1 = 070   // 56
    var num2 = 079   // 79
    var num3 = 08  // 8

    十六进制:前面两位必须是0x后跟任何进制的数字和字母(0-9及a-F)不区分大小写。

    在算术计算时,所有的八进制和十六进制都会转为十进制

    浮点数

    数值必须包含一个小数点,并且小数点后面必须有一位数字,保存浮点数值占用的空间是整数值的两倍

    对于极大或极小的数值用科学记数法表示(e)

    用e表示法的数值等于e前面的数值乘以10的指数次幂

    var num1 = 3.125e4 // 31250  
    var num2 = 3e-2 // 0.3

    由于内存限制,ESMAScript并不能保存世界上所有的数值

    正无穷(Infinity)负无穷(-Infinity)

    NaN (not a number)是一个特殊值,表示一个本来要返回值的操作数未返回值的情况

    (1)任何涉及NaN的操作都会返回NaN

    (2)NaN与任何值都不想等包括NaN本身

    针对以上特点定义了isNaN()函数,帮我们确定参数是否是数值,isNaN()在接收一个值后,会尝试将这个值转换为数值,不是数值返回true是数值返回false

    String

    5、typeof操作符

    因为ESMAScript是松散类型,所以需要一种手段来检测变量的数据类型,typeof操作符可能返回下列某个字符串

    undefined // 值未定义
    boolean //布尔值
    string // 字符串
    number // 数值
    object // 对象或null
    function //函数

    对未初始化和未声明执行typeof都返回undefined

    6、数值转换

    有3个函数可以把非数值转换为数值Number() ParseInt() ParseFloat()

    Number可以用于任何数据类型,而后两个专门用于字符串转数值

    Number的转换规则如下:

    (1)Boolen值,true和false分别转换为1 0

    (2)数字只是简单的传入和返回

    (3)null返回0

    (4)undefined返回NaN

    如果是字符串:

    (1)如果字符串包含数字(包括符号)转十进制

    (2)如果是有效的浮点数,则转换为对应的浮点数忽略前导0

    (3)如果是十六进制,则转为相同大小的十进制

    (4)如果是空则为0

    (5)其它为NaN

    ParseInt()

    忽略字符串前面的空格直到找到第一个非空格的字符串,如果第一个字符不是数字活着符号返回NaN,就是说ParseInt转换空字符串返回NaN;如鬼第一个是数字字符会继续解析直到遇到一个非数字字符,ParseInt可以识别各种格式(八,十六)

    ParseInt有两个参数(转换值,基数(十,十六,八))

    ParseFloat()

    也是从第一个字符开始解析,直到末尾或者解析遇到一个无效的浮点数为止,也就是说第一个小数点是有效的,而第二个小数点是无效的。

    之解析十进制,没有第二参数

    7、操作符 

    递增(递减同理)

    ++a与a++都是对a进行递增操作

    区别

    ++a先返回递增之后的a的值

    a++先返回a的原值,在返回递增之后的值

    8、逻辑操作符

    逻辑非(!)

    (1)如果操作数是一个对象,返回false

    (2)如果是空字符串,返回true

    (3)如果是非空字符,返回false

    (4)如果是0返回true

    (5)如果是任意非0数值(包括infinity)返回false

    (6)如果是null返回true

    (7)如果是NaN返回true

    (8)如果是undefined返回true

    逻辑与(&&)

    短路操作,即如果第一个操作数能够决定结果,那么就不会在对第二个操作数求值,对于逻辑与来说如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true

    在有一个操作数不是布尔值的情况下

    (1)如果第一个操作数隐式类型转换后为true,则返回第二个操作数

    (2)如果第一操作数隐式类型转换后为false,则返回第一个操作数

    (3)有一个null返回null

    (4)有一个NaN返回NaN

    (5)有一个undefined就返回undefined

    var found = true;
    var result = (found&&some) // 发生错误
    console.log(result) //不会执行

    以上代码中,当执行逻辑与操作符时发生错误,因为some没有声明,有found的值时true,所以逻辑与操作符会继续对some求值,但some未定义,所以报错

    var found = false;
    var result = (found&&some) // 不发生错误
    console.log(result) //会执行

    以上代码不会报错,因为无论some有没有定义,也永远不会对它求值,因为第一个操作数时false,也就意味着逻辑与的操作结果一定为false

    逻辑或(||)

    短路操作符,如果第一个操作数的求值结果为true,就不会对第二个操作数求值

    如果有一个操作数不是布尔值的情况下

    (1)如果一个操作数隐式类型转换后为true,则返回第一个操作数

    (2)如果一个操作数隐式类型转换后为false,则返回第二个操作数

    (3)两个操作数都是null则返回null

    (4)两个操作数都是NaN则返回NaN

    (5)两个操作数都是undefined则返回undefined

    var found = true
    var result = (found||som) //
    console.log(result) //true

    以上代码中some虽然没有定义,但是由于变量found是true,some永远不会被求值,所以不会报错

    9、函数

    (1)未指定返回值的函数返回一个特殊值undefined

    (2)可以向函数传递任意数量的参数,并通过arguments对象来访问这些参数

  • 相关阅读:
    Alpha冲刺(3/10)
    Alpha冲刺(2/10)
    Alpha冲刺(1/10)
    软工实践第七次作业——需求分析报告
    2018软工实践第八次作业-团队项目UML设计
    2018软工实践第六次作业-团队选题报告
    2018软工实践第五次作业-结对作业(2)
    软工实践第四次作业-团队展示
    2018软工实践第三次作业-结对作业
    Alpha冲刺(4/10)
  • 原文地址:https://www.cnblogs.com/zry2510/p/10096958.html
Copyright © 2011-2022 走看看