第二周学习

第一天

1.数据类型转换之转布尔值

boolean()

  1. 结果为false的六种情况:0,“ ”,NaN,null,undefined,false
  2. 其他情况都为true
  3. 一般很少主动去转为boolean,主要表现为条件等的隐式转换

2.比较运算符

1.<   >  =  <=  >=  ==  !=  ===

2.默认两边都会转为数字再比较,如果两边都是字符串,则会转为unicode号再比较

3.unicode号:数字<大写字母<小写字母<汉字;

3.逻辑运算符:&  ||  !

1.逻辑运算符的逻辑短路:简化 if()分支结构

条件&&(操作);

特殊点:操作只能写一句

4.赋值运算:+=  -=  *=  /=  %=

1.递增和递减:++i  i++    每次只加一或减一

2.面试题:++i和i++的区别:

1.单独使用(即不参加任何运算)时没有区别;

2.参与运算时,变量值都会加一,但++i 返回的是新值,i++返回的是旧值

5.三目运算:简化if()else分支结构

1.条件1?操作1:条件2?操作2:默认操作

特殊点:默认操作必须写,操作也只能写一句

 

第二天

1.函数的创建方式    

1.声明方式:function  函数名(){}

2.直接量方式:var 函数名=function (){}

3.函数名其实就是一个变量,只不过变量保存的是引用地址,不是函数本身;即函数是一个引用类型的对象

2.函数的返回值:关键字return

1.一个函数只能写一个return

2.return返回的值不会保存,要么创建一个变量来保存

3.可以不写return,返回的是undefined

3.作用域:一个变量的可用范围,两种

1.全局作用域:全局变量和全局函数,在js的任何地方都可用

2.局部作用域:局部变量和局部函数,列如函数中创建的变量,形参,函数中创建的函数等

3.作用域可规定变量的使用范围:

1.优先使用自己的,自己没有找老爹,爷爷等,全局没有则报错

2.全局的或爸爸,爷爷等不能去使用局部变量

3.全局污染,在任何地方给未声明的变量赋值,导致全局污染,浪费内存

4.声明提前

在程序执行之前, 

会把  var  声明变量和  function声明的函数提前到当前作用域的前面创建

但赋值留在原地

特殊:只有声明的方式函数才会提前,直接量方式的函数,函数名(也是通过var 声明的)部分会提前,赋值留在原地

5.按值传递:两个变量进行赋值

1.传递的是原始类型:则修改一个变量,另一个不受影响

2.若传递的是引用类型的数据,则另一个受影响

6.预定义全局函数

1.编码和解码,现在浏览器自带编码和解码,无需再用:var code =(de/en)codeurlcomponent(“文字”)

2.eval():用来计算字符串,脱掉字符串的衣服

3.isfinite(num):判断数字是否超出了有效范围

7.switch ...case 分支结构

switch (变量或表达式){

case 值1:操作1

case 值2:操作2

..........................

}

第三天

1.do while 循环

do{ 循环体} while(循环条件)

面试题:do while 和while循环有什么区别

2. 哈希数组:可自定义下标,方便查找

1.使用哈希数组:哈希数组的长度为0,不能用for循环遍历数组

创建数组:var kong=[  ];

为数组添加元素:kong[  "自定义下标"  ]=新值;

访问哈希数组:kong[  "自定义下标"  ];

2.遍历哈希数组:for  in

for (var i  in  数组名  ){

}

for in 可以遍历哈希。也可遍历索引数组

3.数组API

1.数组转string的API:arr . join(  " 连接符 "  ),链接符自定义

面试题:将数组中的拼接成一句话:var str=arr. join( " " );循环遍历数组,再拼接

二级联动

不修改原数组

2.拼接数组:添加数组元素的新方式

1.var newarr=arr.concat(值1,值2...)

2.特殊点:concat不修改原数组,返回一个新数组,concat可以放入一个数组,会把他打散为单个元素

3.获取/截取子数组

1.var newarr = arr.slice( "starti,  endi" );

2.特殊点:不修改原数组,含头不含尾,endi省略表示截取到末尾,两个都不写表示复制了原来的数组一份

 

4.以下API修改原数组

 

5.删除/添加/替换 新方法:splice

1.删除:var dels=arr. splice(starti, n),n表示删除的个数,dels保存的是删除的元素

2.添加:arr.splice(starti, n ,值1...),n表示删除的个数,

3.替换:var dels=arr. splice(starti, n,值)

4.翻转:arr.reverse

 

第四天

1.数组排序

1.冒泡排序发(面试题):从第一元素开始,依次比较,若前>后,交换两者的顺序

2.数组API排序:arr.sort()

特殊点:默认是将元素转为字符串来比较,

解决数字排序方法:arr.sort( function(a,b){return a-b } ),a-b为升序,b-a为降序

2.栈和队列:数组添加/删除元素的新方式

1.开头进:arr.unshift(新值,...);从开头添加

2.开头出:arr.shift();调用一次删除一个,删除的值会返回到当前函数;

3.结尾进:arr.push(新值,...);从结尾添加

4.结尾出:arr.pop() ;调用一次删除一个,删除的值会返回到当前函数;

3.二维数组

1.创建:var arr=[  [ 1... ],[ 2 ...] ,[  3... ] ]

2.访问:arr. [ 下标 ][ 下标 ]

3.遍历二维数组:使用两层循环

4.引用类型的十一种:

包装类型:string  number  boolean

引用类型:math  regExp  array  function  date  error  object  global

 

第五天

1.string  API:字符串的API都不修改原string,即字符串只读

1.转义字符:\:作用:将冲突的字符转为原文,列如\n

2.大小写转换:使用场景:验证码等

1.转大写语法:var upper=str.touppercase();

2.转小写语法:var lower=str.tolowercase();

3.获取字符串的assci码

1.var ascii=str.  charcodeAt(i)   //把string转为ASSCI码

2.var yuanwen=String.  fromcharcodeAt(assci)  //把assci码转回原文输出

4.检索字符串

var i=str.indexof( "关键字",starti )

找到了关键字,返回的是关键字的下标,没找到的话,返回的是-1;默认返回的只有一个

作用:判断该字符串有没有关键字,

当有多个关键字,循环拿到:

var i=-1,while((i=str.indexof("关键字",i+1))!=-1){    log输出  i   }

5.截取字符串

1.var newstr= str.slice( starti,endi )     //  用法和数组的一致,可支持负数操作

2.str. substr( starti,n )    // n是一个数,代表截取的个数,(此操作不必考虑含头不含尾) ,也支持负数操作

6.替换字符串

1.var newstr= str.replace( "关键字","新内容" )  // 该方法搭配正则表达式更牛逼

7.切割/分割字符串

1.var arr=str.split( "切割符" ) 作用:切割字符串变为数组,根据数组渲染页面

2.特殊点:返回值是一个数组,切割符切割后不存在,切空格“ ”则切散每一个字符

8.扩展

1.js创建新标签:var elms=document. creatElement("标签名");

2.为元素设置必要属性,列如  a  标签的  herf  属性;

3.渲染到dom树种中:parent. appendchild( elms );

 

 

 

 

 

 

 

 

 

posted @ 2021-08-22 18:54  心之所向—素履以往  阅读(37)  评论(0)    收藏  举报