js高级

1.数据类型【js有六种数据类型】 undefined:只有声明,没有赋值 如果没有声明的话,会直接报错。

至于对类型的判断使用typeof

&&与运算,内部并不会进行与运算,只会输出参与运算的一个内容 //会出现短路运算 console.log(1&&2);//2 console.log(0&&2);//0,出现短路运算 console.log(‘hello‘&&‘world‘);//world,这一点就证明了不是与运算,而是某一个内容

switch做分支的用法 【特例:用于条件并不是等于的情形】 switch(true){ case 条件:语句;break; default:语句;break; }

break【跳出本层循环,常用于多层循环,递归中】和continue【跳出本次循环,进入下一次,常用于for和foreach中满足某种条件之后停止循环时使用】的区别: break可以跳出到指定的层【首先要声明该层,然后使用break实现跳出】

js内部并没有函数重载的概念,函数重载说的就是针对参数的数据类型和个数的转变,但是我们可以使用函数内的arguments来实现参数的控制来实现转变。

 

【重点】 2.js的全局和局部变量问题: 在函数内声明中使用var和不使用的区别【这一点已经知道,通过var才能实现局部变量的声明工作】 另外函数内的嵌套问题【也有相对的局部和全局的变量问题】 不过这里的局部和全局的问题,主要还是针对作用域链,通过函数这个可以访问的作用域问题中,对是否能够被访问到该变量有一个更加底层的考虑。 【对作用域链和原型链的研究才是js的语法关键】

3.函数的定义方式,js还可以使用赋值式的定义函数的方式【匿名函数声明】。【php也有匿名函数和闭包等概念】 这种方式没有函数提升【编译】【这里函数的编译就在赋值时才会被执行】 【只有传统的声明函数调用的情况下,可以先调用后声明(这里存在一个函数提升的概念)。】

所以这一点注意【不过正常的编程中,并不会先调用后声明。但js中就是存在变量和函数的提升情形】

4.函数的调用 另外注意js的函数调用问题:【匿名函数的调用问题,该声明或者赋值函数后加一个(),也能保证被调用】 注意递归中使用的关注点【递归出口和递归的情况】

【由于js中函数调用的灵活性,所以在函数定义之初就要考虑到该函数的封装性】 函数赋值的情况【或者函数名的复制】:该函数名是一个对象,是创建一个引用传递。但是都是指向同一个编译出的函数的空间。另一个如果将引用关系取消,该指引并不受影响。【因为函数被编译出的内容并不会被清空,需要js内部引擎的机制来实现处理】 【如果调用中为了更好保证函数递归中的独立性,使用arguments.callee来指代该函数本身【实现当前函数本身,用于递归函数中使用】,控制函数的自身独立性(不会因为函数的定义名称改变而使得函数不能被调用)】

callee和caller两种属性的使用: callee:指代当前函数内的函数名 caller:指代调用者【某个函数被调用执行的那个函数】

5.数组的遍历 js中的数组是对象的一种形式。 如果数组的下标是索引,使用[] 如果下标是关联【字符串】,使用[]或‘.’来实现调用

判断对象是否是实例:instanceof

有时候使用length来获取数组的长度的结果并不正确。【会有因为数组的新增元素而导致计算出错】 【遍历时,使用for会因为length的结果错误导致遍历出问题】

使用for/in遍历 for(var i in array){ //实现遍历的操作 }

数组的操作【这些都是js固有的方法】 js使用方法的特殊情况,都是看做是一个对象的方法。

6.对字符串的处理方法

 

 

 

另外的一些方法: isNaN:是否是非数字 parseInt():转化为整型

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。