目录
1.把网页地址中的url的参数转化为obj
var str="http://www.hqyj.com/index.html?uid=123&page=19&dt=20230407&name=karen"
解题思路:
var str="http://www.hqyj.com/index.html?uid=123&page=19&dt=20230407&name=karen"
function fn (str) {
var arr1=str.split("?")//通过split方法将“?”前后分为两个元素,得到数组arr1[]
//得到数组arr1=[http://www.hqyj.com/index.html,uid=123&page=19&dt=20230407&name=karen]
var arr2=arr1[1].split("&")//点语法调用数组arr1[]第二个元素,用split方法将“&”左右分开,得到数组arr2[]
//arr2=["uid=123","page=19","dt=20230407","name=karen"]
var obj={}//定义一个空对象obj
//for循环遍历
for(var i=0;i<arr2.length;i++){
var arr3=arr2[i].split("=")//点语法调用arr2[]数组中的每一个元素,并通过split方法将“=”两边分开,得到数组arr3[]
//第一次运行for函数得 arr3=["uid","123"]
//第二次运行for函数得 arr3=["page","19"]
obj[arr3[0]]=arr3[1]//数组arr3[]第一个元素为对象属性,第二个元素为赋值
}
return obj
}
var urlobj=fn(str)//定义一个对象urlobj调用fn(str)函数
console.log(urlobj)//打印对象urlobj检查是否转化成功
转化成功:
2.JS作用域笔试题
(1)
<script>
function fun(n, o) {
console.log(o);
return {
fun: function (m) {
return fun(m, n);
},
};
}
var a = fun(0); //undefined
a.fun(1); //0
a.fun(2); //0
a.fun(3); //0
var b = fun(0).fun(1).fun(2).fun(3);
//undefined 0 1 2
var c = fun(0).fun(1); //undefined 0
c.fun(2); //1
c.fun(3); //1
</script>
结果:
分析过程:
对于
var a = fun(0); //undefined
a.fun(1); //0
a.fun(2); //0
a.fun(3); //0
分析过程:
<!--
[
function fun
var a = fun(0);//调用fun函数,生成作用域
[
var n=0,o
console.log(o);//打印undefined
return {
fun: function (m) {
return fun(m, n);
},
};
a.fun(1)[
var m=1
return fun(m,n)==>fun(1,0)
]
a.fun(2)[
var m=2
return fun(m,n)==>fun(2,0)
]
a.fun(3)[
var m=3
return fun(m,n)==>fun(3,0)
]
]
fun(1,0):[
var n=1,o=0
console.log(o);//打印0
return {
fun: function (m) {
return fun(m, n);
},
};
]
fun(2,0):[
var n=2,o=0
console.log(o);//打印0
return {
fun: function (m) {
return fun(m, n);
},
};
]
fun(3,0):[
var n=3,o=0
console.log(o);//打印0
return {
fun: function (m) {
return fun(m, n);
},
};
]
]
-->
对于:
var b = fun(0).fun(1).fun(2).fun(3);
//undefined 0 1 2
分析过程:
<!--
[
function fun
var b = fun(0).fun(1).fun(2).fun(3);
var b=fun(0)==>[
var n=0,o;
console.log(o);//打印undefined
return {fun: function (m) {return fun(m, n); }
fun(0).fun(1)==>[
var m=1
return fun(m,n)==>fn(1,0)==>1:
]
]
1:[
var n=1,o=0
console.log(o);//打印0
return {fun: function (m) {return fun(m, n); }
fun(0).fun(1).fun(2)==>[
var m=2
return fun(m,n)==>fn(2,1)==>2:
]
2:[
var n=2,o=1
console.log(o);//打印1
return {fun: function (m) {return fun(m, n); }
fun(0).fun(1).fun(2).fun(3)==>[
var m=3
return fun(m,n)==>fn(3,2)==>3:
]
3:[
var n=3,o=2
console.log(o);//打印2
return {fun: function (m) {return fun(m, n); }
]
]
-->
对于:
var c = fun(0).fun(1); //undefined 0
c.fun(2); //1
c.fun(3); //1
分析过程:
<!--
[
function fun
var c = fun(0).fun(1);
var c=fun(0) [
var n=0,o
console.log(o);//打印undefined
return {
fun: function (m) {
return fun(m, n);
},
};
fun(0).fun(1)[
var m=1
return fun(m, n);==>fun(1,0)==>1
]
1:[
var n=1,o=0
console.log(o);//打印0
return {
fun: function (m) {
return fun(m, n);
},
};
c.fun(2)[
var m=2
return fun(m, n);==>fun(2,1)==>2
]
c.fun(3)[
var m=3
return fun(m, n);==>fun(3,1)==>3
]
]
]
2:[
var n=2,o=1
console.log(o);//打印1
return {
fun: function (m) {
return fun(m, n);
},
};
]
3:[
var n=3,o=1
console.log(o);//打印1
return {
fun: function (m) {
return fun(m, n);
},
};
]
]
-->
3.改变字符串大小写,大写转为小写,小写转为大写
题目:
var str="abc-def-QbWE-gfhggh"
解题思路:
var str="abc-def-QbWE-gfhggh"
function fn (str) {
var str1=""//定义一个空字符串
for(var i=0;i<str.length;i++){//for循环遍历
if(str[i].charCodeAt(0)>=97){//如果该元素ASCLL码大于97(即为小写字母)
str1+=str[i].toUpperCase()//则改成大写,加在字符串str1中
}else{
str1+=str[i].toLowerCase()//否则改为小写,加在字符串str1中
}
}
return str1
}
var re5=fn(str)//"ABC-DEF-qwe-GFHGGH"