DAY23总结

day23 JavaScript

  • js是javascript的缩写,是一门专门用来控制网页内容的脚本语言并且是唯一的;是web标准中的行为标准,用来控制网页内容的变化
  • 内联js,写在标签的事件相关属性中,例如:onclick
  • 内部js,将js代码写在script标签中,script标签可以放在head标签中,也可以放在body标签中
  • 外部js,将js代码写在js文件中,通过script标签导入
  • js能做的事
    • 通过js修改标签内容
    • 修改标签属性
    • 修改标签属性
    • 添加页面内容
  • js标识符:要求由字母数字下划线符不建议使用,在jquery中有特殊意义
  • js中定义变量有两种情况:(注意在方法外不加var定义变量需对其进行赋值,否则出现xx is not defined)
    • 1.都加var,在方法内则是局部变量,在方法外则是全局变量。
    • 2.在方法内,加var为局部变量,不加var则是全局变量(在执行当前方法之后)
  • js关键字:for、if、var、while、func、true等
  • js数据类型:Number(包含所有数字,支持科学计数法)、String(字符串,用双引号或者单引号引起来的字符集,支持转义字符和编码字符)、Array(数组)、Object(对象)、Boolean(只有true和false两个值,代表真和假)
  • typeof:获取数据对应的类型
  • 一般情况下,一行只写一条语句,语句结束后可以有分号也可以没有,
  • parseFloat:将数据转为浮点数
  • parseInt:将数据转换成整数
  • 变量
    • 声明变量的语法:语法1:变量名=值 语法2:var 变量名/var 变量名=值
    • 说明:标识符,不能是关键字,采用驼峰式命名;声明变量如果没有给变量赋值(语法2才生效),变量的默认值是undefined
    • 同时声明多个变量:a=b=c=10,或者var a1,b1=1,c1=2,不支持a,b=1,2的写法,
  • 运算符:支持数学运算符,比较运算符,逻辑运算符,赋值运算符,位运算
    • 数学运算符:+,-,*,/,%,++,--,
      • 变量++,++变量
    • 比较运算符:>,<,==,!=,>=,<=,===,!==
      • js中的'=='判断两个数据的值是否相同,不管类型,’===‘既判断类型,又判断值,相当于python中的'==',!=和!==同上
    • 逻辑运算符:&&、||、!,即与或非运算,参与运算的变量均为布尔值
    • 赋值运算符:=,+=,-=,*=,/=,%=,与python一样
    • 三目运算符:条件表达式?值1:值2,判断表达式是否为true,为true返回值1,否则值2
  • 分支结构:有if和switch两种分支结构
//分支结构
if(条件语句){
  代码块
}

if(条件语句){
  满足条件执行代码块
}else{
  不满足条件语句执行代码块
}

if(条件语句1){
  满足条件语句1执行代码块
}else if(条件语句2){
  满足条件语句2执行代码块
}else{
  不满足上述全部条件执行代码块
}

switch(表达式){
  case 值1:{
    代码块1
  }
  case 值2:{
    代码块2
  }
  case 值2:{
    代码块3
  }
  ......
  default:{
    代码块n
  }
}
//先计算表达式的结果(表达式不能是赋值运算语句),让这个结果从前往后与每个case后的值进行比较(比较时是用的'==='强等于),如果哪个case后的值和表达式的结果想等,就将这个case作为入口,依次执行后面每个对应的代码块,直到执行完最后一个代码块(包含default)或者遇到break为止,若每个case后的值都和表达式结果不相等,则执行default后的代码
  • 循环结构
//for-in循环
for(变量 in 序列){
  循环体
}//变量依次获取序列中元素的下标(或者对象中的属性名),取完为止,每取一次执行一次循环体

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

while(条件表达式){
  循环体
}

do{
  循环体
}while(条件语句)//先执行循环体,再判断条件语句是否为true,为true再执行循环体,否则跳出循环,do-while型循环至少会执行一次循环体
  • 函数
function funName(argsList){
  函数体
}
//支持位置参数传参,不支持关键字参数传参,不会报错,但顺序无效;参数可以设置默认值,但也需要放在没有默认参数的后面;不支持不定长参数

//匿名函数
func1 = function(参数列表){
  函数体
}
func1(传入参数)


a = function(参数列表){
  函数体
}(传入参数)
  • 字符串:单引号或双引号引起来的字符集,支持转义字符和编码字符,可以通过下标取到对应位置上的字符,但只支持非负整数的下标,下标越界不会报错,获取到的值是undefined;js中字符串不支持[]的切片语法,但有相应的方法
    • 字符串相关操作:加法:支持字符串和任何数据相加,如果另一个数据不是字符串,就转换为字符串再进行拼接操作;比较运算,和python一样比较字符编码
    • 字符串长度:字符串.length
    • 相关方法:字符串.slice()
  • 数组:相当于python中的列表
arr1 = [21,34,67,32,1,57,90]
//查
arr1[下标]

//遍历
for(index in arr1){
  console.log('index:'+index,arr1[index])
  
//增
arr1.push(100) //可以添加多个元素,并返回新数组的长度
console.log(arr1)
arr1.splice(插入位置的下标,0,插入的元素1,元素2...)  //在指定下标前插入指定元素,可以同时插入多个元素

//删除
laseElem = arr1.pop() //只能删除数组中的最后一个元素
firstElem = arr1.shift() //删除并返回数组第一个元素
arr1.splice(开始删除的下标,删除的个数)

//改
arr1[下标]=新值
}

//排序
//sort(函数对象)
//函数对象-函数,有两个参数(代表数组中的两个元素),返回值代表排序方法
nums = [21,45,26,75,1,35,65]
nums.sort(function(a,b){b-a})  //从大到小

nums.sort(function(a,b){a-b})  //从小到大
  • 对象:和python类的对象一样,主要由对象属性和对象方法组成
    • 创建对象:1.对象名={key1: value1, key2: value2...};2.对象名 = new 类型()
    • 构造方法:一个用来创建对象的函数,函数名相当于类名,首字母大写;函数的功能是通过this添加对象属性和对象方法,这里的this相当于self
//构造方法
functoin Person(name,gender,age){
  //通过new方式调用Person,这时的this是Person对象
  //若未使用new方式调用Person,这时的this是window对象
  this.name = name
  this.gender = gender
  this.age = age
  
  //添加对象方法
  this.eat = function(food){
    console.log(this.name+'is eating'+food)
  }
  return this
}
//使用构造方法创建对象
obj1 = new Person('aaa','male',18)  //在创建一个Person类时一定要使用new关键字

你可能感兴趣的:(DAY23总结)