面试题整理 javascrip

原创 卓晓晓AA 随笔 随笔 349阅读 2017-05-19 16:24:30 举报

1、下面这个JS程序的输出是什么:
function Foo() {
var i = 0;
return function() {
console.log(i++);
}
}

var f1 = Foo(),
f2 = Foo();
f1();
f1();
f2();
要点如下:
(1)Function是引用类型:保存在堆中,变量f1,f2是保存在栈中;
(2)闭包:一个函数(产生新的作用域)定义的局部变量、子函数的作用域在函数内,
但是一旦离开了这个函数,局部变量就无法访问,所有通过返回子函数到一个变量f1的方法,让
f1指向堆中的函数作用域,这样可以使用局部变量i.
(3) 过程:
第一次f1() :f1=Foo()中,先执行Foo(): i = 0,return值返回给f1
(f1指向子函数 f1()=function(){.....},因为子函数没有 定义i,所以向上找到父函数定义的 i: )并执行子函数 输出i=0,再自加 i =1(覆盖了父函数Foo 的 i值);
第二次f1() : 执行的是子函数 Function(){ ..},输出的是父函数 的 i=1,再自加 i =2;
第一次f2():同第一次f1(),不同的是 f2指向堆中一个新的对象 function(){ ...},所有此i非彼i,输出i=0;如果
如果再次f2(),那么和第二次f1(),一样输出i=1;
2、下面符合一个有效的javascript变量定义规则的是?

A $te$t2
B with
C bc
d 2a
A正确;
B是关键字;
C有空格;
D开头为数字;
第一个字符必须是一个 ASCII 字母(大小写均可),或一个下划线(
)。注意第一个字符不能是数字。
后续的字符必须是字母、数字或下划线。
变量名称一定不能是 保留字。
3、
下面有关javascript系统方法的描述,错误的是?
A parseFloat方法:该方法将一个字符串转换成对应的小数
B isNaN方法:该方法用于检测参数是否为数值型,如果是,返回true,否则,反回false。
C escape方法: 该方法返回对一个字符串编码后的结果字符串
D eval方法:该方法将某个参数字符串作为一个JavaScript执行
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用来表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。

针对NaN的特点,ECMAScript定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接受一个值后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串“10”或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。

评论 ( 2 )
最新评论
rolitter 2017-05-22 11:22:52 2F

javascrip?这是什么东西

296842176 2017-05-19 16:40:58 1F

挺有用的,赞