1 《JavaScript高级程序设计》学习笔记(1)

欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。

1  《JavaScript高级程序设计》学习笔记(1)

首先,我将从《JavaScript高级程序设计》这本JavaScript学习者必看的经典教程开始,JavaScript的很多语法规则及习惯用法和Java极其相似,因此对于有Java基础的学习者来说,JS是很容易上手的。该系列的每次更新将对应原书的一章内容,本次更新对应原书的第三章,主要是一些基本概念,内容很简单, 知识点也较少。

1  《JavaScript高级程序设计》学习笔记(1)

1、和一般的编程语言一样,标识符可以由字母、数字、下划线和美元符组成,但是不能以数字开头。在JS中,标识符是区分大小写。当然,标识符不能是关键字和保留字。

2、JS中的注释和java一样,有三种注释,分别是单行注释(// 双斜线表示单行注释)、块级注释(/* 这里是块级注释 */)、文档注释(/** 这里是文档注释 */)。

3、严格模式:ECMAScript 5 引入了严格模式的概念, 是为JS定义的一种不同的解析与执行模型。严格模式在后续的学习中会被经常提及。要在整个脚本中启用严格模式,只需要在顶部添加如下代码即可,也可以在函数内部的第一行加上如下代码表示指定函数使用严格模式。

"use strict";

4、JS的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。用关键字var来声明,不需要指定数据的具体类型。在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。

5、JS中有5种简单数据类型(也称基本数据类型)和1种复杂数据类型。简单数据类型分别是UndefinedNullBooleanNumberString,复杂数据类型是Object,Object本质是一组无序的名值对组成的。

  • Object类型:即对象,就是一组数据和功能的集合,可以通过new操作符来创建。和Java中的Object类一样,Object类型是所有对象类型的父类,即Object类型所具有的任何属性和方法也同样存在于更具体的对象中。

  • Undefined类型:只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的。注意:var i;与var i = undefined;这两句是等价的

  • Null类型:只有一个值:null。null表示一个空对象的指针

  • String类型:字符串。

  • Boolean类型:只有两个字面量true和false。但是js中所有的变量都可以使用Boolean()函数将其他数据类型转换成一个Boolean类型的值。

    在转换过程中,Boolean类型的false、String类型的空串、Number类型的0和NaN、Undefined类型的undifined将转化为false,其他情况将转化为true。

  • Number类型:整数和浮点数。js中所有的变量都可以使用Number()函数将其他数据类型转换成一个Number类型的值。

    Number()函数的转换规则:true--1,false--0,null--0,undefined--NaN,空字符串--0,其他字符串如果能转换为数字则返回对应的数字(可以识别十六进制),如果不能则返回NaN。NaN:Not a Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。例如:1/0 返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。

    Infinity:正无穷

    -Infinity:负无穷(就是在Infinity前加一个负号)

6、typeof操作符:对一个变量进行判断变量的类型,可能返回以下字符串:

  • "undefined" 如果这个值未定义或者未初始化

  • "boolean" 如果这个值是布尔值

  • "string" 如果这个值是字符串

  • "number" 如果这个值是数值

  • "object" 如果这个值是对象或null

  • "function" 如果这个值是函数

    具体用法:typeof 95;  或者  typeof(95); 会返回"number"。

7、JS中的操作符:由于JS中的变量是松散类型的,所以在各种操作符之间存在前后两个操作数的类型不一样的情况,所以这一部分的内容比较复杂,也存在各种情况。在这里将简单介绍一下各种操作符。后续将专门写一篇文章来详细介绍这一部分。

  • 一元操作符:自增(++)、自减(--),可应用于整数和浮点数,对于其他类型,先转化为Number类型再进行相关操作,返回对应的数值或NaN、undefined。注意自增、自减操作符在变量的前后不同对赋值结果是有影响的。

  • 位操作符:位与(&)、位或(|)、按位非(~)、位异或(^)、左移(<<)、有符号右移(>>)、无符号右移(>>>)(高位以0填充)。

  • 逻辑运算符:非(!)、与(&&)、或(||)。

  • 关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)、全等(===)、不全等(!==)。若两个操作数均为字符串,则比较两个字符串对应的字符编码,一般是先转化为数值型,然后进行比较。

    表达式 表达式
    null == undefined true true == 1 true
    null === undefined false true == 2 false
    5 == NaN false undefined == 0 false
    NaN == NaN false null == 0 false
    "NaN" != NaN true "5" == 5 true
    "NaN" == NaN false false == 0 true
  • 条件运算符:? : 。

  • 赋值运算符:=、+=、-=、*=、/=、%=、<<=、>>=、>>>=。

  • 逗号运算符:可用于声明多个变量,也可用于赋值。用于赋值时,逗号运算符总返回表达式中的最后一项。

8、JS中的各种语句和其他各种编程语言中的都是一样的。主要是顺序、选择和循环三类。

  • 顺序语句:with(expression) statement 将代码的作用于设置到一个特定的对象中,相当于一种简写形式。例如我们需要用到对象a的两个方法getName()和getAge()需要写代码为

    var name = a.getName();
    var age = a.getAge();  

    此时用with语句可以写成

    with(a){
        var name = getName();
        var age = getAge();
    }
  • 选择语句:if、if...else...、switch...case...。

  • 循环语句:do...while、while、for、for...in。

    for...in:是一种精准的迭代语句,可以用来枚举对象的属性。

    for(var propName in window){
      document.write(propName);
    }
  • 其他语句:break、continue、label。

    label:标签语句,可用于被break和continue引用。

上一篇:String.format的用法


下一篇:(转)Java程序员应该了解的10个面向对象设计原则