1、请写出下面 JS 顺序中几个 alert 的效果:
var a = 100;
function fn() {
alert(a);
var a = 200;
alert(a);
}
fn();
alert(a);
var a;
alert(a);
var a = 300;
alert(a);
本身去控制台敲敲就知道了哈
2、请写出以下顺序的输出
var obj1 = {name: 'obj1', fn: function() {
document.write(this.name);
}};
var obj2 = {name: 'obj2'};
var obj3 = {name: 'obj3'};
obj1.fn();
var newFn = obj1.fn;
newFn();
newFn.call(obj2);
obj3.fn = newFn;
obj3.fn();
本身去控制台敲敲就知道了哈
3、一个数组 par 中寄存有多个职员的信息,每一个职员的信息由岁数 age 和姓名 name 构成,如{age: 2, name: ‘xx’}。请写一段 JS 顺序,对这个数组按岁数从小到大举行排序。
我这边以下完成:
function parSort(par) {
return par.sort(function(arr1, arr2) {
return arr1.age > arr2.age ? -1 : 1;
});
}
4、有字符串 var = ‘abc345efgabcab’,请写出 3 条 JS 语句离别完成以下 3 个功用:
1)去掉字符串中的a、b、c 字符,构成效果:’345efg’
2)将字符串中的数字用中括号括起来,构成效果:’abc3[5]efgabcab’
3)将字符串中的每一个数字的值离别乘以 2,构成效果:’abc6810efgabcab’
我这边以下完成:
// 1)
str.replace(/([a-c])/g, '');
// 2)
str.replace(/(\d)/g, '[$1]');
// 3)
str.replace(/(\d)/g, function(num) {return num*2;});
5、请写一段 JS 顺序类,定义一个列表类List,该类包括两个成员:属性 length(示意列表中的元素个数)和要领 add (像列表中增加元素),个中请求组织函数和 add 要领的参数为动态参数。
我这边以下完成:
function List() {
this['_data'] = [];
for (var ele in arguments) {
this._data.push(arguments[ele]);
}
this.length = this._data.length;
}
List.prototype = {
construct: List,
add: function() {
for (var ele in arguments) {
this._data.push(arguments[ele]);
}
this.length = this._data.length;
}
}
6、叨教之前 JS 顺序有什么问题?应当怎样优化?
function setStyle(element) {
element.style.fontWeight = "bold";
element.style.textDecoration = "none";
element.style.color = "#000000";
}
我这边优化以下:
function setStyle(element) {
if (!element.style) {
return;
}
var eleStyle = element.style;
eleStyle.fontWeight = "bold";
eleStyle.textDecoration = "none";
eleStyle.color = "#000000";
}
7、请写出一下正则表达式:
1)婚配一个全部是数字的字符串
2)提取一个 url 所运用的协定范例如 http、ftp 和 host 称号
我这边完成以下:
// 1)
var str = '1234';
/^\d+$/.test(str);
// 2)
var str = 'http://yangbai.me';
str.match(/(([a-zA-Z]{3,5})\:\/\/)?(www\.)?([a-zA-Z\_\-]+)\.([a-zA-Z]+)$/);
8、请运用闭包的体式格局,写一段 JS 顺序完成以下功用:函数每挪用一次则该函数的返回值加 1。
我这边以下完成:
function A() {
var count = 0;
function B() {
count++;
return count;
}
return B;
}
var plus = A();
//A中的count会一向停留在内存中。。。
plus();// 0
plus(); // 1
plus(); // 2
9、请写出下面 JS 顺序中几个 document.write 的效果:
function Parent() {
this.a = 1;
this.b = [1, 2, this.a];
this.c = {demo: 5};
this.show = function() {
document.write(this.a + ' ' + this.c.demo + ':' + this.b + '<br/>')
}
}
function Child() {
this.a = 2;
this.change = function() {
this.b.push(this.a);
this.a = this.b.length;
this.c.demo = this.a++;
}
}
Child.prototype = new Parent();
var parent = new Parent();
var child1 = new Child();
var child2 = new Child();
child1.a = 11;
child2.a = 12;
parent.show();
child1.show();
child2.show();
child1.change();
child2.change();
parent.show();
child1.show();
child2.show();
我这边打印以下:
1 5:1,2,1
11 5:1,2,1
12 5:1,2,1
1 5:1,2,1
5 5:1,2,1,11,12
6 5:1,2,1,11,12
10、请简述对 MVC 的明白,并枚举一些 MVC 架构的 js 框架。
来吧,知无不言……
11、请用 js 顺序完成二分算法。
我这边以下完成:
/**
* 简朴二分查找完成【数组必需有序】
* @param {[type]} arr [description]
* @param {[type]} num [description]
* @param {[type]} start [description]
* @param {[type]} end [description]
* @return {[type]} [description]
*/
function binaryFind(arr, num, start, end) {
start = start || 0;
end = end || arr.length;
var mid = Math.floor((start + end) / 2);
var midVal = arr[mid];
if (start >= end) {
return false;
}
if (midVal === num) {
return 'arr[' + mid + '] = ' + midVal;
} else {
if (midVal > num) {
return binaryFind(arr, num, 0, mid);
} else {
return binaryFind(arr, num, mid+1);
}
}
}
12、有如许一个 URL:http://vip.qq.com/a.php?a=1&b…,请写一段 JS 顺序提取 URL 中的各个参数(参数名和参数个数不确定),将其按 key-value 情势返回到一个 json 构造中,如{a:’1′,b:’2′,c:”,d:’xxx’,e:undefined}。
我这边完成以下:
/**
* 剖析url参数为对象
* @param {[type]} url [description]
* @return {[type]} [description]
*/
function parseUrl(url) {
url = url.toString();
var ret = {};
var urlArr = url.split('?');
if (urlArr.length < 2) {
return ret;
}
var paramsArr = urlArr[1].split('&');
var len = paramsArr.length;
for (var i=0; i<len; i++) {
var arr = paramsArr[i].split('=');
ret[arr[0]] = arr.length > 1 ? arr[1] : undefined;
}
return ret;
}
13、XSS 道理是什么?怎样提防呢?请写一个进击和防备的例子。CSRF 和 hash 碰撞的道理是什么。怎样提防。
来吧,知无不言……
14、请枚举前端能够采用的罕见优化体式格局
来吧,知无不言……
15、请枚举你所相识的跨域完成要领
来吧,知无不言……