第二周学习
第一天
1.数据类型转换之转布尔值
boolean()
- 结果为false的六种情况:0,“ ”,NaN,null,undefined,false
- 其他情况都为true
- 一般很少主动去转为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 );
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号