/**
* 1. 设计函数:f(a,b) = f(a)(b) = a + b
* 因为:result1 = f(a) = function(b){...}
* 因此:result1(b) = a + b
*/
function f(a) {
if(arguments.length==1) {
return function(b) {
return a + b
}
}else {
return a + arguments[1];
}
}
console.log(f(2)(3));
console.log(f(2,3));
/**
* 块级作用域 for 循环中var 的改写
* 闭包只能取得包含函数的最后一个值
*/
(function(){
for(var i = 0; i<10; i++){
(function(j){
setTimeout(function(){
console.log(j);
},0);
})(i)
}
})()
/**
* this 指的是执行上下文环境
*
*
*/
/**
* 浅拷贝
*/
var obj = { a:1, arr: [2,3] };
var shallowObj = shallowCopy(obj);
function shallowCopy(src) {
var dst = {};
for (var prop in src) {
if (src.hasOwnProperty(prop)) {
dst[prop] = src[prop];
}
}
return dst;
}
/**
* 深拷贝
*/
var cloneObj = function(obj){
var str, newobj = obj.constructor === Array ? [] : {};
if(typeof obj !== 'object'){
return;
} else if(window.JSON){
str = JSON.stringify(obj), //系列化对象
newobj = JSON.parse(str); //还原
} else {
for(var i in obj){
newobj[i] = typeof obj[i] === 'object' ?
cloneObj(obj[i]) : obj[i];
}
}
return newobj;
};
/**
* *数组合并
*/
//利用concat
function concat(arr1, arr2) {
return arr1.concat(arr2);
}
//利用slice+push.apply
function concat(arr1, arr2) {
var newArr=arr1.slice(0);
[].push.apply(newArr, arr2);
return newArr;
}
//利用slice+push
function concat(arr1, arr2) {
var newArr=arr1.slice(0);
for(var i=0;i<arr2.length;i++){
newArr.push(arr2[i]);
}
return newArr;
}
//普通的迭代拷贝
function concat(arr1, arr2) {
var newArr=[];
for(var i=0;i<arr1.length;i++){
newArr.push(arr1[i]);
}
for(var j=0;j<arr2.length;j++){
newArr.push(arr2[j]);
}
return newArr;
}
javascript面试题1
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 比较运算符中不等于符号是?( )A: ==B: !C: !=D: <> 有语句“var x=0;while(__)...
- 1.知识点 2.列如 3.变量类型和计算 4.原型和原型链 5.instanceof 6.原型继承实例 7.作用域...