1.JSX语法,与react有什么关系?
2.render方法为什么不能放两个同级的兄弟元素,只能放一个根元素?
3.react与Vue相比,有什么优缺点?
4.react有几个生命周期?
5.虚拟DOM是存在什么地方的?
6.什么是高阶组件?
7.在地址栏访问地址,这个过程发生了什么?
8.CSS有哪几种定位?有什么区别,absolute可以相对于absolute吗?哪些是脱离了正常的文档流?
9.说一下CSS的盒模型?
10.常用的跨域方法?
11.get和post的区别
12.js继承
13.js实现url解析
14.call()和apply()
15.代码如下:
请定义这样一个函数 function repeat (func, times, wait) { } 这个函数能返回一个新函数,比如这样用 var repeatedFun = repeat(alert, 10, 5000) 调用这个 repeatedFun ("hellworld") 会alert十次 helloworld, 每次间隔5秒
16.代码如下:
写一个函数stringconcat, 要求能 var result1 = stringconcat("a", "b") result1 = "a+b" var stringconcatWithPrefix = stringconcat.prefix("hellworld"); var result2 = stringconcatWithPrefix("a", "b") result2 = "hellworld+a+b"
解答15,16题
代码如下:
第一题:
/*
* 第一题
* @param func
* @param times
* @param wait
* @returns {repeatImpl}
*/
function repeat (func, times, wait) {
//不用匿名函数是为了方便调试
function repeatImpl(){
var handle,
_arguments = arguments,
i = 0;
handle = setInterval(function(){
i = i + 1;
//到达指定次数取消定时器
if(i === times){
clearInterval(handle);
return;
}
func.apply(null, _arguments);
},wait);
}
return repeatImpl;
}
// 测试用例
var repeatFun = repeat(alert, 4, 3000);
repeatFun("hellworld");
第二题:
/*
* 第二题
* @returns {string}
*/
function stringconcat(){
var result = [];
stringconcat.merge.call(null, result, arguments);
return result.join("+");
}
stringconcat.prefix = function(){
var _arguments = [],
_this = this;
_this.merge.call(null, _arguments, arguments);
return function(){
var _args = _arguments.slice(0);
_this.merge.call(null, _args, arguments);
return _this.apply(null, _args);
};
};
stringconcat.merge = function(array, arrayLike){
var i = 0;
for(i = 0; i < arrayLike.length; i++){
array.push(arrayLike[i]);
}
}
//测试用例
var result1 = stringconcat("a", "b"); //result1 = "a+b"
var result3 = stringconcat("c", "d"); //result1 = "a+b"
var stringconcatWithPrefix = stringconcat.prefix("hellworld");
var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1");
var result2 = stringconcatWithPrefix("a", "b"); //result2 = "hellworld+a+b"
var result4 = stringconcatWithPrefix1("c", "d"); //result2 = "hellworld+a+b"
alert(result1);
alert(result2);
alert(result3);
alert(result4);