基础语法

2023-02-22  本文已影响0人  升龙无涯

基础语法

一、基础语法

1、变量

概念:内存中存储数据的一个容器。

声明方式:

var 变量名 // 在内存中开辟了一个空间
var 变量名 = 值 // 内存中开辟空间并放入数据

变量名的规则:变量名由字母、数字、下划线、美元符号、汉字组成,不能用数字开头,不能将关键字作为变量名。

关键字:

var typeof isNaN Number String Boolean Object Array Function function break if else switch case default for while do continue in of Date top window new this Math

=在代码中不叫等于赋值符。左边一定是一个即将放入数据的变量,右边一定是具体的数据或能得到具体数据的表达式,作用是将右边的数据放入左边的变量中。

2、数据类型

js中的数据类型:

3、运算

4、类型转换

4.1、隐形转换

4.2、强制转换

二、分支语句

概念:做判断的结构

1、单分支

if(条件) {
   当条件为true的时候执行的代码段
}

2、双分支

if(条件) {
   当条件是true的时候执行的代码段
} else {
   当条件为false的时候执行的代码段
} 

3、多分支

if(条件1) {
    当条件1是true的时候执行的代码段
} else if(条件2) {
    当条件2是true的时候执行的代码段      
} else if(条件3){
    当条件3是true的时候执行的代码段             
}...
else{
    上面条件都是false的时候执行的代码段
}

多选1执行

第一个不成立,才会去执行第二个。。。

4、switch多路判断

switch(变量) {
    case 值1:
        当变量 === 值1 的时候执行的代码段
    break
    case 值2:
        当变量 === 值2 的时候执行的代码段
    break
    ....
    default:
        上面条件都不成立的时候执行的代码段
}

break可以省略,后续的case不判断,直接执行

default可以省略

多路判断比多分支效率高,只判断一次

多路判断只能判断 全等

5、三元运算

能且仅能简化简单的双分支

条件 ? 条件是true的时候执行的代码 : 条件是false的时候执行的代码

整个三元运算表达式可以当做是一个具体的数据,进行输出、赋值

例:

num = num.length === 1 ? '0'+num : num
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed)

三、循环结构

学习目的:简化重复

1、while

while(条件) {
    条件是true的时候重复执行的代码段
}

2、do-while

do{
    代码段 - 先执行一次,然后判断条件,后续是否执行就看条件是否为true
}while(条件)

3、for

for(初始值定义语法; 条件; 变化) {
    条件为true的时候重复执行的代码段
}

重点:循环执行的过程

四、函数

理解:存储一段代码的容器

定义语法:

function 函数名(形参1, 形参2, ...) { // 形参就是变量名
    // 形参就相当于在函数内提前定义好的变量
    // 如果没有实参给形参赋值 - 形参默认是undefined
    // 形参可以直接给赋值 - 形参有默认值 - 只能放在最后
    代码段
    // 如果函数调用后需要得到一个结果 - 必须return 结果
    // return 可以阻止代码向下执行
}

函数名的规则:跟变量名的规则一样

调用语法:

var 变量 = 函数名(实参1, 实参2, ...)

<font color="red">**预解析: **</font>

概念:代码在执行之前先进行解析

过程:从当前作用域找所有变量定义和函数定义,找到后将变量定义和函数定义的代码提升到当前作用域的最前面。代码按照提升后的顺序执行。

注意事项:

  1. 只提升定义,不提升赋值
  2. 当变量名和函数名同名,保留函数,忽略变量
  3. 预解析一定在执行之前 - 不会执行的代码中如果有变量和函数的定义,也会预解析
  4. 全局有全局预解析,局部也有局部的预解析
  5. 局部如果有形参,先给形参赋值,再进行预解析,且预解析的函数跟形参同名,函数会覆盖掉形参的值
  6. 代码报错以后的代码就不再执行了 - 如果代码中有报错,就无法阻止默认行为了
  7. 连等特殊语法:var a = b = 9 相当于:var a = 9 b = 9

函数的本质:就是一个特殊变量,存储了一段代码,可以通过变量名()执行这段代码

匿名函数:将一个函数赋值给变量使用 - 这个变量的类型是function,值就是这一段代码 - 原本函数中的名字就失效了 - 这样没有名字的函数就叫匿名函数

匿名函数作用:

  1. 将匿名函数赋值给变量使用

  2. 自调用

    (function(形参) {
        
    })(实参)
    

<font color="red">作用域</font>

概念:能起到作用的区域

分类:全局和局部

在全局中定义的变量叫全局变量 - 可以在任何地方使用

在局部中定义的变量叫局部变量 - 只能在局部中使用

重点:全局不能访问局部变量,局部可以访问全局变量

作用域链:作用域会发生嵌套,这样形成一条链式结构叫作用域链。

作用域链的规则:

  1. 将一个变量当做具体数据使用(输出、让他去运算)的时候,先在当前作用域中找这个变量的定义,如果没有,就去上级作用域中找,。。。直到全局,全局没找到,报错:XX is not defined
  2. 给一个变量赋值,先在当前作用域中找变量的定义,如果没有,就去上级作用域中找,。。。直到全局,全局没找到,就在全局定义这个变量并赋值 - 省略var定义变量

递归函数:

概念:在函数内调用自己 - 形成循环

注意事项:一定要添加停止的条件

事件:

给标签添加行为。

标签.on类型 = 一段函数代码

一段函数代码可以是匿名函数,也可以用函数名表示。一定不是函数调用的语法。

上一篇下一篇

猜你喜欢

热点阅读