• JavaScript高级程序设计学习笔记第三章--基本概念


    一、标识符:

    1.区分大小写

    2.命名规则:

    • 第一个字符必须是一个字母、下划线(_)或一个美元符号($)
    • 其他字符可以是字母、下划线、美元符号或数字
    • 标识符中的字母也可以包含扩展的 ASCII 或 Unicode 字母字符(如 À 和 Æ) ,但不推荐这样做。
    • 不能把关键字、保留字、true、false和null用作标识符

    3.书写方式:最好按照驼峰大小写格式书写,就是第一个字母小写,剩下的每个单词的首字母大写,但不强制这么做
    二、注释(两种方式)

    1. 单行注释://
    2. 多行注释:/*……*/

    三、严格模式:“use strict”,一个编译指示,用于告诉JavaScript编译器切换到严格模式

    四、语句:

    1. 语句后的;可以省略,但不推荐
    2. 建议使用代码块,即使只有一条语句

    五、关键字:break、do、instanceof、typeof、case、else、new、var、catch、finally、return、void、continue、for、switch、while、debugger*(第五版新增) function、this、with、default、if、throw、delete、in、try

    六、保留字:abstract、enum、int、short、boolean、 export、nterface 、static、byte、 extends、long、 supe、char、 final、 native、 synchronized、class、 float、package、 throws、const 、goto、 private、 transient、debugger、 implements、protected、volatiledouble、import、 public、let、yield(第五版新增)

    七、关键字与保留字不要作为标识符,最好的命名是有意义的命名,能够明确知道其代表的含义

    八、变量:

    1. 占位符,可以保存任何类型数据
    2. 定义变量:使用var关键字,例如var message;,定义了一个message变量,使用 var 声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在 with 语句中,最接近的环境是函数环境。如果初始化变量时没有使用 var 声明,该变量会自动被添加到全局环境。
    3. 初始化变量:message="hi";

    九、定义并初始化变量的两种方式:

    1. var message="hi";//包含两步,定义变量var message;初始化变量message="hi";
    2. var message;message="hi";
    3. 定义并初始化多个变量:var message = "hi",found = false,age = 29;

    p.s 即用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量,例如:

    1 function test(){
    2 var message = "hi"; // 局部变量
    3 }
    4 test();
    5 alert(message); // 错误!

    错误如下:

    错误原因:因为message用var关键字定义,其作用域为function{……},而alert(message)要对message进行RHS,没有在全局作用域中找到其相应的值,所以会出现如上错误。

    而下面的代码就不会出现上面的错误:

    1 function test(){
    2 message = "hi"; // 全局变量
    3 }
    4 test();
    5 alert(message); // "hi"

    原因:在调用函数test的时候,由于需要对message进行LHS,作用域中并没有定义message变量,所以会在全局作用域中定义一个message变量,这样的在执行alert(messsage)的时候就可以再全局作用域中找到一个message变量,它的值为hi。(关于LHS与RHS的具体内容可以参考我的另外一篇博客)

    十、数据类型--五种简单数据类型(基本数据类型)

    typeof操作符:用来检测变量的类型

    1. Undefined类型:Undefined 类型只有一个值,即特殊的 undefined,只定义未初始化的变量的值默认为undefined,例如:
    1 var message;
    2 alert(message == undefined); //true
    3 
    4 
    5 var message = undefined;
    6 alert(message == undefined); //true

    p.s 定义未初始化的变量与未定义的变量使用typeof的结果同样都是undefined,但二者原理是不一样的,最好是显示的初始化变量,这样当返回值为undefined时,我们就可以确定该变量是没有被声明,而不是没有初始化

    1 var message; // 这个变量声明之后默认取得了 undefined 值
    2 // 下面这个变量并没有声明
    3 // var age
    4 alert(message); // "undefined"
    5 alert(age); // 产生错误
    6 alert(typeof message); // "undefined"
    7 alert(typeof age); // "undefined

    2.Null类型:只有一个值,就是null。null值表示一个空对象指针,使用typeof操作符时返回的值是object

    p.s undefined 值是派生自 null 值的,alert(null == undefined); //true

    3.Boolean类型:有两个值:true和false

    Boolean():将一个值转换为其对应的Boolean值得函数,转换过程如下:

    1 var message = "Hello world!";
    2 var messageAsBoolean = Boolean(message);//true
    数据类型 转换为true的值 转换为false的值
    Boolean true false
    String 任何非空字符 ""
    Number 任何非零数字值(包括无穷大) 0和NaN(参见本章后面有关NaN的内容)
    Object 任何对象 null
    Undefined   undefined

    4.Number类型:表示整数与浮点数

    整数:默认为十进制,也可以表示八进制和十六进制

    浮点数:

    1 var floatNum1 = 1.1;
    2 var floatNum2 = 0.1;
    3 var floatNum3 = .1;//不推荐
    4 var floatNum4 = 1.; // 小数点后面没有数字——解析为 1
    5 var floatNum5 = 10.0; // 整数——解析为 10
    6 var floatNum6 = 3.125e7; // 等于 31250000

    数值范围:

    • 最小值:Number.MIN_VALUE 
    • 最大值:Number.MAX_VALUE 
    • 超过范围时,将会转换为Infinity与-Infinity,不能用于进行计算
    • isFinite()函数:用于检测是否在最大值与最小值之间

    NaN:非数值(Not a Number)是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。
    特点:

    • 任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN
    • NaN 与任何值都不相等,包括 NaN 本身,如alert(NaN == NaN); //false
    • isNaN()函数:确定函数参数是否“不是数值”,如果不是数值返回true,是数值返回false。这个函数其实还很容易混淆的。运用这个函数还需要对参数进行类型转换。isNaN()确实也适用于对象。在基于对象调用 isNaN()函数时,会首先调用对象的 valueOf()方法,然后确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值再调用 toString()方法,再测试返回值。
    1 alert(isNaN("10")); //false(可以被转换成数值 10)
    2 alert(isNaN(true)); //false(可以被转换成数值 1)

    数值转换:有三个函数可以把非数值转换为数值: Number()、 parseInt()和 parseFloat()

    • Number():可以用于任何数据类型,转换规则:
      • 如果是 Boolean 值, true 和 false 将分别被转换为 1 和 0。
      • 如果是数字值,只是简单的传入和返回。
      • 如果是 null 值,返回 0。
      • 如果是 undefined,返回 NaN。
      • 如果是字符串,遵循下列规则:
        • 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"会变成 1, "123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了,八进制不能这样正常转化为十进制);
        • 如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导零);
        • 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
        • 如果字符串是空的(不包含任何字符),则将其转换为 0;
        • 如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。
      • 如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值。
    • parseInt()函数:从第一个字符(位置 0)开始解析每个字符。会忽略字符串前面的空格,直至找到第一个非空格字符(遇到空字符串会返回NaN)
      • 如果第一个字符不是数字字符或者负号, parseInt()就会返回 NaN
      • 如果第一个字符是数字字符, parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符
    • parseFloat()函数:从第一个字符(位置 0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。

    parseInt()与parseFloat()函数的区别:

    • 在parseInt()函数中,第一个小数点无效,在parseFloat()函数中,第一个小数点有效。例如:
    1 var num4 = parseInt(22.5); // 22
    2 var num3 = parseFloat("22.5"); //22.5
    3 var num4 = parseFloat("22.34.5"); //22.34
    • parseFloat()始终都会忽略前导的零,而parseInt()可以识别出八进制与十六进制,还可以有第二个参数,用于标志用哪种进制进行解析,例如:
    1 var num5 = parseInt("070"); // 56(八进制数)
    2 var num7 = parseInt("0xf"); // 15(十六进制数)
    3 var num2 = parseFloat("0xA"); //0
    4 var num5 = parseFloat("0908.5"); //908.5

    5.String类型:表示由零或多个 16 位 Unicode 字符组成的字符序列.

    • 使用""或者''都可以。
    • 特殊字面量需要用转义字符
    • 字符串的不可变性

    转换为字符串的方法:toString()函数和String()函数。

    toString()可以传递一个参数:基数.

    null和undefined没有toString()方法,有String()方法。

     6.Object类型:

    创建对象的方法:var o=new object();或者var o={};

    每个对象都具有的属性与方法:

    • constructor:保存着用于创建当前对象的函数。
    • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
    • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型
    • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句来枚举。
    • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
    • toString():返回对象的字符串表示。
    • valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。

    7.操作符:

    • ++,--,分为前置与后置
    • +,-:二者放在数值前面不会产生变化,放在非数值前面,则会先按照Number()函数的转换规则,+不会产生变换,-会变成负数
    • 位操作符:左移>>,右移<<
    • 布尔操作符:逻辑非(!),逻辑与(&&),逻辑或(||)
    • 乘性操作符:*
    • 除法:/
    • 取余:%
    • 加法与减法:+,-
    • 关系操作符:<=,>=,<,>
    • 相等操作符:==(类型转换),===(类型不转换)
    • 条件操作符:?:
    • 逗号操作符:",",用于声明多个变量,也可以用于赋值,赋值的话会返回表达式的最后一个值

    8.语句:

    • if
    • do-while
    • while
    • for(;;):三个表达式都是可选的
    • for in
    • label
    • break与continue
    • with
    • switch

    9.函数:

    • function关键字定义
    • return语句后面的语句都不会被执行
    • 函数可以通过arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。
    • arguments并不是Array的实例,只是与数组类似,可以通过方括号语法来访问属性值,通过length属性确定传递进来多少个参数
    • 1 function doAdd(num1, num2) {
      2 arguments[1] = 10;
      3 alert(arguments[0] + num2);
      4 }

      第二个参数num2改成10,num2与arguments[1]访问的不是同一处的存储空间,但二者的值会保持同步。

    • ECMAScript所有参数传递的都是值,没有引用传递
    • 没有重载,因为有arguments,不算做有真正的函数签名
  • 相关阅读:
    三、sersync+rsync实现服务器文件实时同步
    二、Linux实时同步软件之inotify
    一、rsync基础原理
    Samba实战
    DHCP企业实战
    NTP服务器企业实战
    Vsftpd服务器原理及部署
    Python的五大数据类型的作用、定义方式、使用方法,两种交互式方式,格式化输出的三种方式练习。
    pycharm快捷键,变量,字符串,类型的操作方法
    python基础归纳练习 python两种方式,垃圾回收机制,小数整池,数字类型,字符串类型。
  • 原文地址:https://www.cnblogs.com/yangxiaoguai132/p/5180967.html
Copyright © 2020-2023  润新知