JS语法

JS是什么?

  • JavaScript的简写,与Java没有半毛关系;相当于雷锋与雷峰塔,印度与印度尼西亚的关系

  • 它是客户端(浏览器)脚本,服务端脚本Node.js

  • 他可以给静态页面添加动态属性,如:添加事件,修改样式。

  • 由来:NetSpace => LiveScript,后来与Sun公司合作;

    为了借助Java语言的名气进行宣传和推广,将名字改为了JavaScript。

JS引入方式

  • 方式1:在HTML中的任意位置添加script标签,标签中即可书写JS代码

  • 方式2:通过script标签引入外部的JS文件

  • 方式3:设置元素的特定属性,添加或设置元素的特殊事件

变量定义

  • 数字:number, 整数、小数

  • 字符串:string,单引号、双引号都可以, '+'可以进行字符串拼接

  • 布尔:boolean,只有两个值,true和false

  • 数组:array,可以使用[]定义,也可以使用new Array()定义

  • null:空类型,只有一个值,null,类型名为object

  • NaN:not a number,不是一个数字,类型任然是object

    • 使用isNaN进行判断,不能使用 '=='

  • 未定义:undefined

    • 定义变量不赋值,使用对象不存在的属性,都会出现未定义变量

    • 直接判断应与undefined比较,使用typeof判断应与'undefined'比较

  • 对象:object

    • 方式1:先创建对象,然后添加属性和方法

    • 方式2:使用JSON字符串创建对象

    • 方式3:使用类似于构造方法的形式

基本运算

  • 赋值运算:=

  • 算术运算:+、-、*、/、%

  • 复合运算:+=、-=、*=、/=、%=

  • 自增自减:++、--

    • 放在变量前:先自增或自减,然后参与其他运算

    • 放在变量后:先参与其他运算,然后在自增或自减

  • 关系运算:>、>=、<、<=、==、!=、===、!==

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

  • 按位运算:&、|、^、~、<<、>>

  • 三目运算:?:

    • 格式:表达式1 ? 表达式2 : 表达式3

    • 流程:首先判断表达式1的真假,若为真表达式2作为返回值,否则表达式3作为返回值

流程控制

  • 说明:

    • 条件都是写在()中的

    • 代码块都是写在{}中的

  • 分支结构(if-else)

    • if - else if - ... -else

  • 分支结构(switch-case)

    • 格式:

      switch (表达式) {
          case 常量1:
              语句块1
              break
          ....
      
          default:
              语句块
              break
      }

       

    • 说明:

      当程序执行到switch-case语句时,首先计算表达式的值,然后与所有的case选项匹配,匹配成功,则直接跳转到对应的语句块执行,直到遇见break才跳出结构;若没有匹配成功,则执行default语句块。
  • 循环结构(while)

    • 与python中的使用方式一样

    • 格式:

      while (表达式) {
          循环体
      }

       

  • 循环结构(do-while)

    • 格式:

      do {
          循环体
      } while (表达式)

       

    • 说明:

      当程序执行到do-while语句时,首先执行循环体,然后判断表达式的真假;若表达式的值为真,则继续执行循环体,直到表达式的值为假;若表达式的值为假,则直接向下执行。
  • 循环结构(for)

    • 格式:

      for (表达式1; 表达式2; 表达式3) {
          循环体
      }

       

    • 说明:

      当程序执行到for语句时,首先执行表达式1,然后判断表达式2的真假;若表达式2的值为真,则执行循环体,然后接着执行表达式3,之后再进行表达式2的判断;若表达式2的值为假,则跳出循环。
    • 使用:

      • for中的三个表达式可以任意组合的省略

      • 表达式1通常做初始化的操作,省略时需要将初始化操作放在for之前

      • 表达式2省略,循环条件为真也就是死循环,可以结合break完成原有的功能

      • 表达式3通常是使循环趋于结束的语句,省略后需要放在循环体的最后面。

  • 循环结构(for-in)

    • 类似于python中的使用,专门用于遍历数组和对象

  • 异常处理

    // 尝试执行代码
    try {
        // 抛出异常, 抛出一个字符串即可
        throw '出问题了'
        alert('normal')
    // catch 捕获异常
    } catch (e) {
        alert(e)
    }

     

函数使用

  • 函数定义使用关键字:function

  • 函数的调用可以放在定义之前

  • 函数名不能重复,因为后面会覆盖前面的

  • 函数可以像普通变量一样使用,打印时会显示全部内容

  • 匿名函数:就是没有名字的函数,定义时只需将正常的函数定义去掉名字即可

  • 内部函数:定义在函数内部的函数

  • 函数参数:

    • 可以有默认值

    • 函数参数不传也不会报错

    • 所有的函数参数都会保存在arguments变量中(可以认为是数组)

  • 封闭空间:

    // 封闭空间,既可以作为一个整体,又可以灵活实现功能
    (function(a, b){
        alert(a+b)
    })(3, 5)

     

  • 变量作用域

    • 全局变量:定义在函数外部的变量,哪里都可以使用

    • 局部变量:定义在函数内部的变量,只能在函数内部使用

总结

  • 常用函数:

    • alert

    • typeof

    • document.write

    • parseInt

    • parseFloat

  • 常用类库:

    • String:字符串

    • Math:数学

    • Date:日期

    • Array:数组

    • RegExp:正则

10-06 17:27