1.
var a = [1,2,3];
a.splice(1,1,2,3,4);
console.log(a);
结果是什么?
答案:
[ 1, 2, 3, 4 ,3]
splice(index,delLength,addElements);
删除1处的1个元素,在1处插入2,3,4
2.
关于XSS,下列说法正确的是:
A:XSS的全称是Cross Site Scripting。
B:CSRF是XSS的一种
C:从Cookie中获取用户名并输出到页面的过程不会导致XSS。
D:XSS都是因为后端未对数据做安全检查造成的。
答案:A
A:XSS:跨站脚本攻击
B:CSRF(Cross-site request forgery)跨站请求伪造,已经授权的用户在未知的情况下进行表单提交。
C:会,DOM型XSS
D:XSS有三种,反射型、持久型、Dom型,其中前2者是前后端未对数据进行检查,而Dom型只有前端。
3.以下两种方式调用函数时,alert的结果?
var foo = 1;
function main(){
alert(foo);
var foo = 2;
alert(this.foo);
this.foo = 3;
}
main();
new main();
答案:
undefined
undefined
undefined
undefined
当执行到main中的alert(foo)时,因为检测到foo在之后定义了,所以知道foo指的是main中的foo,所以显示undefined。
this.foo也是同理,undefined。this.foo在对象中,而foo是定义在main函数中,所以2者不同。
main()的运行和new main()的运行完全一样,只是返回的内容不同,前者返回return 内容,后者返回对象。
4.
关于跨域问题下面哪些说法是正确的
A:通过jsonp方式可以发出POST请求其它域名下的接口
B:通过iframe设置document.domain可以实现跨域
C:可以利用flash的http请求,来处理跨域问题
D:i.aliyun.com中可以ajax请求www.aliyun.com/info.json
答案ABC
D里面子域不同也不允许跨域
5.
关于CSS中的单位一下哪个说法是正确的:
A:px是相对于显示器屏幕分辨率的相对长度单位
B:em是相对于body标签font-size的单位
C:rem是相对于其父元素来设置字体大小的
D:pt(point)是印刷常用单位“磅”,大小为1/72英寸。
答案:
AD
px是相对单位,也有一种说法是像素单位。
em是相对于当前对象的font-size的单位,而不是body
rem是相对于根元素来调整大小的
6.
function A(params){
params = params || {};
for (var key in params){
Object.defineProperty(this,key,{
get:function () {
return params[key];
},
enumerable:false
});
}
//key = 3;
}
var a = new A({
'x':'X',
'y':'Y',
'z':'Z'
});
有上述程序,下列说法不正确的是:
A:运行console.log(a.x);的结果是x
B:a.y()运行结果是TypeError:String is not a function的错误
答案:A
Object.defineProperty可以设置属性的一些属性,比如:
configurable: false, //是否可以删除属性,是否可以修改属性的 writable 、 enumerable 、 configurable 属性。
enumerable: false, //是否可以枚举,是否可以通过for...in 遍历到,是否可以通过 Object.keys() 方法获取属性名称
writable: false, //是否可以对属性进行重新赋值
value: null, //属性的默认值
set: undefined, //属性被赋值时,此方法被自动调用
get: undefined //属性被读取时,此方法被自动调用
A:console.log(a.x)的结果是Z,因为key值最后被赋值为'z',所以任何属性的get方法都会返回params['z']
B:报的错误是y not a function
7.没有
8.
编写一个Java Script函数,传入仅包含数组多维数组,返回拍平后结果。
比如:传入[1,[2,3]],返回[1,2,3]
function flatten(arr){
//return flattened_arr
}
答案1:
function flatten(arr) {
var result = (arr + "").split(',');
return result;
}
console.log(flatten([1,[2,3]]));
答案2:
function flatten(arr) {
var result = [];
function insert(subarr) {
for (var i = 0,ii = subarr.length;i < ii;i ++){
if (subarr[i] instanceof Array){
insert(subarr[i]);
}else{
result.push(subarr[i]);
}
}
}
insert(arr);
return result;
}
console.log(flatten([1,[2,3]]));
9.页面A的域名是:www.taobao.com。页面B的域名是:www.tmall.com,如果A使用iframe引用B,如何做到iframe的高度自适应(即B内容有多高,iframe就有多高)
<iframe src="http://www.tmall.com" id="myiframe" scrolling="no" οnlοad="changeFrameHeight()" frameborder="0"></iframe>
function changeFrameHeight(){
var ifm= document.getElementById("iframepage");
ifm.height=document.documentElement.clientHeight;
}
window.οnresize=function(){
changeFrameHeight();
}
10.
JavaScript实现格式化输出,比如输入999999999,输出为999,999,999
function strFormat(num,sp,len){
var resultStr = "";
var numStr = num + "";
var i = numStr.length - 3;
while (i >= 0){
resultStr = "," + numStr.substr(i,len) + resultStr;
// console.log(resultStr);
i -= len;
}
// console.log(i);
if (i > -len){
resultStr = numStr.substr(0,i + len) + resultStr;
}else{
resultStr = resultStr.substr(1,resultStr.length - 1);
}
return resultStr;
}
console.log(strFormat("0123456789",",",3));
11.
运用JS设置cookie、读取cookie、删除cookie
//写cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
//读取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
//删除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
12.
CSS样式设置,略
13.
请编写一个JS函数parseQueryString,它的用途是把URL参数解析为一个对象
如:var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2"
function getObjFromUrl(url){
var strArr = url.split("?");
var hostStr = strArr[0];
var paramsArr = strArr[1].split("&");
var resultObj = {};
resultObj["host"] = hostStr;
resultObj["params"] = [];
for (var i = 0,ii = paramsArr.length;i < ii;i ++){
var keyAndValue = paramsArr[i].split("=");
resultObj["params"].push({
key:keyAndValue[0],
value:keyAndValue[1]
});
}
return resultObj;
}
var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2";
console.log(getObjFromUrl(url));
var a = [1,2,3];
a.splice(1,1,2,3,4);
console.log(a);
结果是什么?
答案:
[ 1, 2, 3, 4 ,3]
splice(index,delLength,addElements);
删除1处的1个元素,在1处插入2,3,4
2.
关于XSS,下列说法正确的是:
A:XSS的全称是Cross Site Scripting。
B:CSRF是XSS的一种
C:从Cookie中获取用户名并输出到页面的过程不会导致XSS。
D:XSS都是因为后端未对数据做安全检查造成的。
答案:A
A:XSS:跨站脚本攻击
B:CSRF(Cross-site request forgery)跨站请求伪造,已经授权的用户在未知的情况下进行表单提交。
C:会,DOM型XSS
D:XSS有三种,反射型、持久型、Dom型,其中前2者是前后端未对数据进行检查,而Dom型只有前端。
3.以下两种方式调用函数时,alert的结果?
var foo = 1;
function main(){
alert(foo);
var foo = 2;
alert(this.foo);
this.foo = 3;
}
main();
new main();
答案:
undefined
undefined
undefined
undefined
当执行到main中的alert(foo)时,因为检测到foo在之后定义了,所以知道foo指的是main中的foo,所以显示undefined。
this.foo也是同理,undefined。this.foo在对象中,而foo是定义在main函数中,所以2者不同。
main()的运行和new main()的运行完全一样,只是返回的内容不同,前者返回return 内容,后者返回对象。
4.
关于跨域问题下面哪些说法是正确的
A:通过jsonp方式可以发出POST请求其它域名下的接口
B:通过iframe设置document.domain可以实现跨域
C:可以利用flash的http请求,来处理跨域问题
D:i.aliyun.com中可以ajax请求www.aliyun.com/info.json
答案ABC
D里面子域不同也不允许跨域
5.
关于CSS中的单位一下哪个说法是正确的:
A:px是相对于显示器屏幕分辨率的相对长度单位
B:em是相对于body标签font-size的单位
C:rem是相对于其父元素来设置字体大小的
D:pt(point)是印刷常用单位“磅”,大小为1/72英寸。
答案:
AD
px是相对单位,也有一种说法是像素单位。
em是相对于当前对象的font-size的单位,而不是body
rem是相对于根元素来调整大小的
6.
function A(params){
params = params || {};
for (var key in params){
Object.defineProperty(this,key,{
get:function () {
return params[key];
},
enumerable:false
});
}
//key = 3;
}
var a = new A({
'x':'X',
'y':'Y',
'z':'Z'
});
有上述程序,下列说法不正确的是:
A:运行console.log(a.x);的结果是x
B:a.y()运行结果是TypeError:String is not a function的错误
答案:A
Object.defineProperty可以设置属性的一些属性,比如:
configurable: false, //是否可以删除属性,是否可以修改属性的 writable 、 enumerable 、 configurable 属性。
enumerable: false, //是否可以枚举,是否可以通过for...in 遍历到,是否可以通过 Object.keys() 方法获取属性名称
writable: false, //是否可以对属性进行重新赋值
value: null, //属性的默认值
set: undefined, //属性被赋值时,此方法被自动调用
get: undefined //属性被读取时,此方法被自动调用
A:console.log(a.x)的结果是Z,因为key值最后被赋值为'z',所以任何属性的get方法都会返回params['z']
B:报的错误是y not a function
7.没有
8.
编写一个Java Script函数,传入仅包含数组多维数组,返回拍平后结果。
比如:传入[1,[2,3]],返回[1,2,3]
function flatten(arr){
//return flattened_arr
}
答案1:
function flatten(arr) {
var result = (arr + "").split(',');
return result;
}
console.log(flatten([1,[2,3]]));
答案2:
function flatten(arr) {
var result = [];
function insert(subarr) {
for (var i = 0,ii = subarr.length;i < ii;i ++){
if (subarr[i] instanceof Array){
insert(subarr[i]);
}else{
result.push(subarr[i]);
}
}
}
insert(arr);
return result;
}
console.log(flatten([1,[2,3]]));
9.页面A的域名是:www.taobao.com。页面B的域名是:www.tmall.com,如果A使用iframe引用B,如何做到iframe的高度自适应(即B内容有多高,iframe就有多高)
<iframe src="http://www.tmall.com" id="myiframe" scrolling="no" οnlοad="changeFrameHeight()" frameborder="0"></iframe>
function changeFrameHeight(){
var ifm= document.getElementById("iframepage");
ifm.height=document.documentElement.clientHeight;
}
window.οnresize=function(){
changeFrameHeight();
}
10.
JavaScript实现格式化输出,比如输入999999999,输出为999,999,999
function strFormat(num,sp,len){
var resultStr = "";
var numStr = num + "";
var i = numStr.length - 3;
while (i >= 0){
resultStr = "," + numStr.substr(i,len) + resultStr;
// console.log(resultStr);
i -= len;
}
// console.log(i);
if (i > -len){
resultStr = numStr.substr(0,i + len) + resultStr;
}else{
resultStr = resultStr.substr(1,resultStr.length - 1);
}
return resultStr;
}
console.log(strFormat("0123456789",",",3));
11.
运用JS设置cookie、读取cookie、删除cookie
//写cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
//读取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
//删除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
12.
CSS样式设置,略
13.
请编写一个JS函数parseQueryString,它的用途是把URL参数解析为一个对象
如:var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2"
function getObjFromUrl(url){
var strArr = url.split("?");
var hostStr = strArr[0];
var paramsArr = strArr[1].split("&");
var resultObj = {};
resultObj["host"] = hostStr;
resultObj["params"] = [];
for (var i = 0,ii = paramsArr.length;i < ii;i ++){
var keyAndValue = paramsArr[i].split("=");
resultObj["params"].push({
key:keyAndValue[0],
value:keyAndValue[1]
});
}
return resultObj;
}
var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2";
console.log(getObjFromUrl(url));