参考答案
第1章
1
(1) ×,JS动态弱类型
(2)×,不是BOM而是DOM
(3) √
(4) ×,TS是JS的超集
第2章
1
(1)不合法,\u{23ff}不是正确的unicode编码形式
(2)合法
(3)合法
(4)合法其中\uff45是单个字符
(5)合法
2
输出为
0 10 20
0 10 21
0 10 22
3 -1
4 true
5 number 3
6
(1)undefined,子作用域不影响本作用域
(2)函数,因为没有赋值所以没有覆盖
(3)3, a先定义了,然后被覆盖了
7
(1)""
(2)所定义的空函数
(3)所定义的空对象 true
第3章
1
(1)略,自行练习。
(2)
function mycall(){
console.w());
}
function produce(call,millis){
var w();
return function(){
let w();
if(now-time>millis){
time=now;
call();
}
}
}
const alias=produce(mycall,500);
setInterval(alias,100);
(3)
function mycall(){
console.log("calling at ",w());
}
function produce(call,millis){
var handle=null;
return function(){
if(handle!=null){
clearTimeout(handle);
handle=setTimeout(function(){call
();handle=null;},mills);
}
};
}
const alias=produce(mycall,3000);
alias();
alias();
alias();
(4)
function LazyNumber(value){
var acts=[];
this.add=function(v){
acts.push( (function(v){value+=v;}).bind(this,v));
return this;
}
this.minus=function(v){
acts.push( (function(v){value+=v;}).bind(this,v));
return this;
}
this.multiply=function(v){
acts.push( (function(v){value+=v;}).bind(this,v));
return this;
}
this.div=function(v){
acts.push( (function(v){value+=v;}).bind(this,v));
return this;
}
=function(){
let act;
while((act=acts.shift())!=null)act();
return value;
}
}
let num=new LazyNumber(10);
num.add(1).minus(5).multiply(7).div(2);
console.());
(5)
function Provider(){
var dict={};
ByType(stype,args=[]){
if(stype in dict)return dict[stype];
for(let t in dict)
if(stype instanceof t)
return dict[t];
return dict[stype]=new stype(...args);
}
}
function A(a){
this.a=a;
}
let provider=new Provider;
ByType(Number,[3]);
ByType(RegExp,[/abc/]);
ByType(A,[6]);
console.ByType(Number));
console.ByType(RegExp));
console.ByType(A));
2
function A(){
for(var i=0;i<5;i++){
setTimeout( (function(i){
console.log(i);
}).bind(this,i),0);
}
}
A();
3
(1)
3,因为有3个元素
11,因为最大自然数索引为10
11,因为关联键不影响数组的长度计算
(2)
长度11 结果为 [1, 2, 3, 4, 5, 6, 7, 8,[9,10], 1, [2,[3]]]
(3)
10 传入参数为单个且为数值时认为它为长度
2 传入参数有多个时均为元素
1 传入参数为单个且不为数值时认为它为元素
报错,因为会当1.1为长度,但是1.1并不能当长度
(4)D,有时候是不稳定的
(5)
function sort_function(a,b){
if(a.index>b.index)return 1;
else if(a.index==b.index)return 0;
else return -1;
}
var arr=[{index:1},{index:6},{index:3,v:1},{index:5},{index:3,v:6},{index:2}];
arr.sort(sort_function);
console.log(arr);
本次排序是稳定的
4
有问题,throw和它后面的表达式之间不可以有换行。
5
最外层绑定了变量a和它的值2
函数执行前就绑定了变量a。
第三个作用域,在catch内创建了变量绑定a,并在执行过程中给它赋值3。
但是catch退出后就回到了函数作用域,其内的a并没有被赋值。
所以最终输出的是undefined.
6
返回false。Date()得到一个时间字符串,为String类型而不为Date类型
第4章
1
<div id="content"></div>
<script>
const articles={
"diary":{
"today":"it is a funny day!"
},
"program":{
"algorithm":"algorithm is too hard!"
}
}
function makeTree(arr,i){
const tag=str=&ateElement(str);
let ul=tag('ul'),li=tag('li');
ul.append(li);
li.innerText=arr[i];
if(i<arr.length-1){
javascript属于前端吗 li=tag('li');
ul.append(li);
li.append(makeTree(arr,i+1));
}
return ul;
}
hashchange=function(e){
content.innerHTML="";
let arr=location.hash.slice(1).split('/')
content.append(makeTree(arr,0));
let ateElement('p');
let o=articles;
for(let i in arr)o=o[arr[i]];
text.innerText=o;
content.append(text);
console.log(text);
}
</script>
2
(1)√
(2)√
3
(1)a c d b
(2)a c d
(3)a c
4
(kie='a=100; secure';
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论