HTML学习
day5-js基础语法
变量
1.标识符
有字母、数字、下划线和$组成,数字不能开头
2.变量
变量名 = 值
var 变量名 = 值
let 变量名 = 值
const 变量名 = 值
前三种定义变量的语法对比:
a.如果用这三种方法定义变量都是在块和函数的外面,没有区别(都是全局的)
b.如果用let定义在任何{}中的变量,都只能在当前{}中使用
c.用var定义在函数中的变量,只能在当前函数中使用
d.const定义的变量不能修改
e.用关键字定义变量的时候,可以不给变量赋值,默认值是undefined
运算符
运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符
1.数学运算符
+
-
*
/
%
++ —— 变量++/++变量 变量=变量+1
-- —— 变量--/--变量 变量=变量-1
注意:++/--写在前面和后面在运算式中可能意义不一样
2.比较运算符
>
<
>=
<=
==
!=
===
!==
注意:
a.== —— 判断值是否相等(如果比较类型不同,会先转换成相同类型再看这两个数据是否相等)
b.=== ——相当于python的==
c.js不支持表示范围的连写方式
3.逻辑运算符
&&(逻辑与)
||(逻辑或)
!(逻辑非)
4.赋值运算符
=
+=
-=
*=
/=
%=
5.运算符优先级
运算符优先级和python一样的
分支结构
js中的分支结构有两种:if语句、switch语句
1.if语句
a.if单分支:
if(条件语句){
满足条件要执行的代码块
}
b.if双分支
if(条件语句){
满足条件要执行的代码
}else{
不满足条件要执行的代码
}
c.if多分支结构
if(条件语句1){
代码块1
}else if(条件语句2){
代码块1
}else if(条件语句3){
代码块3
}...
else{
代码块N
}
2.switch语句
switch(表达式){
case 值1:{
代码块1
}
case 值2:{
代码块2
}
case 值3:{
代码块3
}
...
default:{
代码块N
}
}
执行过程:
先计算表达式的结果,让结果依次和每个case后面的值进行比较,如果那个case后面的值和表达式的值相等,就将这个case作为入口,依次执行后面所有的代码块,直到结束或者遇到break为止。如果没有一个是相等的,就将default作为入口,依次执行后面所有的代码块,直到结束或者遇到break为止。
循环结构
js中的循环结构有两种:while循环、for循环
1.while循环
a.while循环
while(条件语句){
循环体
}
b.do-while
do{
循环体
}while(条件语句)
2.for循环
a.python中的for
for (变量 in 序列){
循环体
}
和python的区别:变量取到的是下标或者key(属性名),取到的不是元素
b.c语言中的for
for(表达式1;表达式2;表达式3){
循环体
}
3.循环中的关键字break、continue
用法和python一模一样
函数
1.函数的定义
function 函数名(参数名1,参数名2,参数名3,...){
函数体
}
注意:关键字参数不可用,可以参数赋默认值
2.函数调用的实参和形参
js中的每个函数在调用的时候实参的个数都可以是任意多个;
实参个数比形参少:没有实参的形参是undefined
实参个数比形参多:会将前面的实参依次赋值给形参
js中每个函数中都有一个变量arguments用来保存当前函数被调用的时候接受到的所有的实参(类型可以看成数组)
3.匿名函数
function(参数名1,参数名2,参数名3,...){
函数体
}
4.箭头函数
(参数名1,参数名2,...)=>{函数体}
(参数名1,参数名2,...)=>返回值
常用数据类型
js中常用的数据类型:数字、布尔、字符串、数组、对象
typeof(数据) —— 获取数据对应的类型名
1.数字类型:Number
js中所有的数字对应的类型都是Number
2.布尔:Boolean
只有 true 和 false 两个值,true本质就是数字1,false本质就是数字0
3.字符串:String
使用单引号或者双引号引起来的字符集
支持转义字符
字符串的属性和方法
1.length —— 获取字符串的长度
2.字符串.charAt(下标) —— 返回指定下标对应的字符
3.字符串1.concat(字符串2,字符串3,字符串4,...) —— 将所有字符串拼接在一起产生一个新的字符串
4.字符串.match(正则表达式)
正则表达式对象.test(字符串) —— 判断字符串和正则是否匹配,返回值是布尔
5.字符串1.replace()
注意:正则的后面加g是全局匹配,加i是忽略大小写,gi —— 既做全局匹配,又忽略大小写
6.字符串.slice(开始下标,结束下标) —— 字符串切片
4.类型转换
1.类型名(数据) —— 将数据转换成指定类型
2.数字类型转换
parseInt(数据) —— 将数据转换成整数(直接保留整数部分)
parseFloat(数据) —— 将数据转换成小数
Math.ceil(小数) —— 向上取整
Math.floor(小数) —— 向下取整
Math.round(x) —— 四舍五入
Math.random() —— 产生0~1的随机数
数组
1.数组(Array)
js中的数组就相当于python中的列表
2.查
a.查单个元素
b.遍历
数组.forEach(function(元素,下标){
每获取一个元素,执行一次的代码段
})
3.增
a.数组.push(元素) —— 在数组的最后添加一个元素
b.数组.splice(下标,0,元素1,元素2,元素3,...) —— 在指定下标前插入指定元素
4.删
a.数组.pop()
b.数组.splice(下标,删除个数)
5.改
和python一样
对象
1.对象字面量(相当于python的字典)
属性名1:属性值1
属性名2:属性值2
...
注意:属性名可以不加引号,可以像字典一样获取元素的值,也可以像对象一样获取元素的值
2.构造方法(类似类) —— 用来创建对象的函数
function 类名(){
this.属性 = 值 —— 添加属性
this.方法 = 函数 —— 添加方法
return this
}
调用:调用之前加 new 才会创建对象
直接调用普通函数的时候,this就是窗口对象(是唯一的)
通过new去调用,this就是当前对象
3.对象属性的增删改查
a.查
b.增、改
c.删
4.给指定类的所有对象添加属性和方法
类型名.prototype.属性名 = 值
给指定类所有的对象添加指定的属性