020、让函数执行有哪几种方式
1、js是基于事件驱动的语言、因此可以通过js的事件来调用函数让函数执行
2、直接写函数名加()
3、立即执行函数。在字面量函数后面({}后面加())
021、定义函数的几种方式
1、关键字函数:function fnName(){};
2、字面量函数:var fn = function(){};
3、构造函数:var fn = new Function()
022、函数的作用
1、减少代码的编写(代码重复利用)
2、隐藏处理细节,便于今后的修改和维护
3、控制执行时机
023、谈谈你对参数的理解
1、参数分为:形参和实参
2、有了参数以后可以使函数变的更加灵活
3、形参和实参要一一对应
4、如果对应的形参没有传值,那么值是undefined
024、什么是作用域链?
1、简单说就是作用域集合 当前作用域 -> 父级作用域 -> ... -> 全局作用域 形成的作用域链条
全局作用域的变量和方法都可以进行调用
局部的变量和方法只能局部进行调用( 除闭包外 )
局部可以访问全局的变量和方法
025、console.log与console.dir的区别
console.log()可以取代alert()或document.write(),在网页脚本中使用console.log()时,会在浏览器控制台打印出信息。
console.dir()可以显示一个对象所有的属性和方法。
026、谈谈你对arguments的了解
1、函数内部自带的一个对象
2、存储的是所有的实
3、可以使用[]及下标访问arguments中的内容 arguments[0] 访问第一个实参
4、可以使用 arguments.length 确定传入实参的个数
5、最常用的用途: 判断传入参数的个数(根据参数个数做不同的事情)
027、请说一下js的编译和执行
1、js的预编译:
a、把var 和 function 定义的变量提升到script的最上方
b、赋值语句不会被提升,哪怕等号后面是一个function
2、js执行:代码从上往下执行
028、简单的阐述一下js的变量声明提升
变量声明和函数声明从他们代码中出现的位置被移动到执行环境的顶部,这个过程就叫做提升 只有声明操作会被提升,赋值和逻辑操作会被留在原地等待执行
Js编译器会把变量声明看成两个部分分别是声明操作(var a)和赋值操作(a=2)
背会!!!!递归与循环的区别
递归算法:
优点:代码简洁、清晰,并且容易验证正确性。
缺点:
1、它的运行需要较多次数的函数调用,如果调用层数比较深,每次都要创建新的变量,需要增加额外的堆栈处理,会对执行效率有一定影响,占用过多的内存资源。
2、递归算法解题的运行效率较低。在递归调用的过程中系统为每一层的返回点、局部变量等开辟了栈来储存。递归次数过多容易造成栈溢出等
注意:递归就是在过程或函数里调用自身;使用递归策略时要注意的几个条件
1、必须有一个明确的递归结束条件,称为递归出口。
2、递归需要有边界条件、递归前进段和递归返回段。
3、当边界条件不满足时,递归前进。当边界条件满足时,递归返回。
循环算法:
优点:速度快,结构简单。
缺点:并不能解决所有的问题。有的问题适合使用递归而不是循环。如果使用循环并不困难的话,最好使用循环
029、创建数组的几种方式
三种方式:
1、var arr = new Array();
2、var arr = Array
3、var arr = [];
030、如果判断一个对象是不是另一个对象创建出来的
数组.instanceof Array