JavaScript周考
看程序写结果(55分)
-
定出下列代码的运行结果【2分】
var a=10, b=20,c=30; ++a; //11 a++; //这次11,下次12 var e=++a+(++b)+(c++)+a++; //13+21+30+13=77 console.log(e);
-
写出下列代码的运行结果【4分】
var length=10; function fn(){ console.log(this.length); } var obj={ length:5, method:function(fn){ fn(); arguments[0](); } } obj.method(fn,1); //本题答错不扣分
-
写出下列代码的结果【3分】
var v = 123; function foo(){ var v = 456; function inner(){ console.log(v); } return inner; } result = foo() console.log(result()) //456 undefined
-
写出下列代码的结果【3分】
Name='root'; Age = 18; function Foo(name,age){ this.Name = name; this.Age = age; this.Func = function(){ console.log(this.Name,this.Age); /* (function(){ console.log(this.Name,this.Age); })(); */ function a(){ console.log(this.Name,this.Age); //普通调用 this指向全局的window } a(); } } obj = new Foo('alex',666); obj.Func() //'alex' 666, 'root' 18
-
写出下列程序的结果【3分】
var result = ["1","2","3"].map(parseInt); console.log(result); //[1,NaN,NaN]
-
写出下列代码的运行结果【6分】
var userName = "小明"; var obj = { userName: "小红", sayHello: function () { console.log(this.userName); } } var stuArr = [obj]; var teacher = { userName: "老师" } stuArr.map(function (item, index, a) { console.log(this.userName); item.sayHello.call(this); return item.sayHello.bind(obj); }.bind(teacher), window).forEach(function(item,index,a){ item(); }); //bind可以理解绑定this的指向与call/apply一样的 //老师,老师 ,小红
-
请写出下列程序的运行结果【4分】
var foo = "11"+2-"1"; //"112"-"1"; // console.log(foo); //111 console.log(typeof foo); "number"
-
请写出下列代码运行结果【2分】
var foo=1; +function(){ console.log(foo); var foo=2; console.log(foo); }(); //undefined 2;
-
请写出下列代码的运行结果【3分】
var a=10; b=20; c=4; console.log(++b+c+a++); //21+4+10 //35
-
请定出下列程序的运行结果【2分】
for(i=0,j=0;i<10,j<6;i++,j++){ k = i + j; } console.log(k); //10
-
请定出下列代码在控制台依次打印的结果【4分】
function f1(){ var tmp = 1; this.x = 3; console.log(tmp); console.log(this.x); } var obj = new f1(); // 1, 3 console.log(obj.x) // 3 f1(); //1,3 //普通调用,this指向window console.log(f1()); // 1,3,undefined
-
请定出下列代码的执行结构【2分】
var a = 6; setTimeout(function () { console.log(a); var a = 666; }, 1000); a = 66; //undefined
-
请定出代码的依次运行结果【7分】
function Foo() { //注意与下面的getName发生冲突 getName = function () { console.log(1); }; return this; } //把Foo方法当成了对象 Foo.getName = function () { console.log(2); }; //Foo当成构造方法 new Foo()---->.__proto__ Foo.prototype.getName = function () { console.log(3); }; var getName = function () { console.log(4); }; /*此处会被覆盖 function getName() { console.log(5); } */ Foo.getName(); //2 对象调方法 getName(); //4 Foo().getName(); //1 //执行FOO(覆盖了外边的getName),返回window ----window.getName() //window.getName()指的是全局的getName() getName(); //1 new Foo.getName(); //2 new Foo().getName(); //3 new new Foo().getName(); //3 //new this.getName();
-
看程序写结果【2分】
(function test(){ var a=b=5; // var a; //b=5; //a=b; console.log(typeof a); //number console.log(typeof b); //number })(); console.log(typeof a); //undefined console.log(typeof b); //number
-
看代码写结果【2分】
var User = { count: 1, getCount: function() { return this.count; } }; console.log(User.getCount()); //1 var func = User.getCount; console.log(func()); //undefined
-
说出下列函数的作用是什么,空白区别填写什么【6分】
function fn(str) { this.str = str; } fn.prototype.format = function() { var arg = arguments; return this.str.replace(/\{\(d+)\}/g, function(a, b) { return arg[b] || ""; }); } var t = new fn('<p><a href="{0}">{1}</a><span>{2}</span></p>'); console.log(t.format('http://www.alibaba.com', 'Alibaba', 'Welcome'));
上面的代码经过运算以后,希望得到下面的代码
<p><a href="http://www.alibaba.com">AliBaba</a><span>Welcome</span></p>
则空白处应该填写什么?
程序设计题(35分)
- 将数字
12345678
转换成RMB形式。如:12,345,678
【5分】 - 已知有字符串 "
get-element-by-id
",写一个 方法将其转化成 驼峰表示法"getElementById
" 【5分】 - 用 js 实现随机选取 10–100 之间的 10 个数字,存入一个数组,数据中不能有重复的元素,完成后排序。【5分】
- 有这样一段url地址
http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e
,请写一段 JS 程序提取 URL 中的各个 GET 参数(参数指提是后面的a=1这样的结构,参数名和参数个数不确定),将其按 key-value 形式返回到一个对象中,如{a:"1", b:"2",c:undefined,d:"xxx",e:undefined}。
【10分】 - 删除与某个字符相邻且相同的字符,比如
fdaffdaaklfjklja
字符串处理之后成为“fdafdaklfjklja
" 【10分】
发挥题(10分)
任选两题完成,共10分
-
定义一个 log 方法,让它可以代理 console.log 的方法
-
判断一个字符串中出现次数最多的字符,统计这个次数,如下字符串
var str ='asdfssaaasasasasaa';
要求:不允许将字符串转换成数组
-
使用递归完成求出100以内的质数
评论区