JS考察:
1、基本数据类型:undefined、null、String、Number、boolean、array、object。 2、有以下两个函数,定义一个对象使其拥有这两个函数属性。
function mobile(){
return 'mobile';
}
function phone(){
return 'phone';
}
var a = {};
a.mobile = mobile();
a.phone = phone();
console.log(a);
3、(考察了对象变量和堆内存)
var a = {n:10,m:20};
var b = a;
b.n = 30;
console.log(a.n);
console.log(b);
输出的结果是什么?
看了这个图就很明了了,变量a和变量b在堆内存空间中所指向的地址指针是相同的,所以当b改变时a也会改变。
4、(考察闭包)
var x = 20;
var a = {
x : 15,
fn : function(){
var x = 30;
return function(){
return this.x;
};
}
};
console.log(a.fn());
console.log((a.fn())());
console.log(a.fn()());
console.log(a.fn()() == (a.fn())());
console.log(a.fn().call(this));
console.log(a.fn().call(a));
(还有很多种情况的输出,当时我看到我就懵逼了o(≧口≦)o) 先说一下输出的答案: 1)、function(){return this.x;} 2)、20 3)、20 4)、true 5)、20 6)、15 这道题中的this都是指向windows,所以this.x的值都为20,第1、2、3、4种情况都很好理解,到第五第六种考察了call这个函数,call的用途: // 1. 替换函数运行环境中的this // 2. 传递参数 // 3. 运行函数 所以第六种是把this指向了a对象,所以输出的是a.x就为15。 5、(数组去重复项,以下是我做的)
var arr = ['a','g','q','d','a','e','q'];
Array.prototype.unique = function(){
for(var i = 0; i < this.length; i++){
for(var j = i+1; j < this.length; j++){
if(this[i] == this[j]){
this.splice(j,1);
}
}
}
return this;
};
console.log(arr.unique());
6、编写一个函数fn(Number n),将数字转为大写输出,如输入123,输出一百二十三。
function fn(n){
if(!/^([1-9]\d*)/.test(n)){
return '非法数据';
}
var unit = '千百十亿千百十万千百十个';
if(n.length > unit.length){
return '数据过长';
}
var newStr = '';
var nlength = n.length;
unit = unit.substr(unit.length - nlength);
for(var i = 0; i < nlength; i++){
newStr += '零一二三四五六七八九'.charAt(n[i]) + unit.charAt(i);
}
newStr = newStr.substr(0,newStr.length-1);
newStr = newStr.replace(/零(千|百|十)/g,'零').replace(/(零)+/g,'零').replace(/零(亿|万)/g,'$1');
return newStr;
}
console.log(fn('205402002103'));
这题考察了正则表达式还有数组的操作。
【web前端交流群0007群】群号618250199【定期更新群文件】课工场官网注册UID获取免费学习视频课,http://www.kgc.cn/?tuin=7145web前端的公益学习交流平台,全部免费保你快速入门,每周定期有公开直播课,有业内大咖为你授业解惑,真实项目案例分享,从零到大神的成功之路,从你相信我开始!!!
转载于:https://www.cnblogs.com/luludehuhuan/p/6494499.html