前端面试题

本文介绍了一系列JavaScript高级编程技巧,包括闭包、自执行函数、数组操作、DOM操作等实用方法,帮助开发者提高编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var test = (function(a) {
    this.a = a;
    return function(b) {
        return this.a + b;
    }
} (function(a, b) {
    return a;
}(1, 2))); 
console.log(test(4));

//   输出5   自执行函数和闭包      (function(a, b) { return a;}(1, 2)) 返回值1,作为参数传入function(b)

例子2:实现sum(2,3)===sum(2)(3)==5

function sum(x,y) {
  if(y!=undefined) {
    return x+y
  } else {
    return function(sec) {
       return x+ sec;
    }
  }
 
}
或者
function sum() {
  var num = arguments[0];
  if(arguments.length === 2) {
    return arguments[0] + arguments[1]
  } else {
    return function(sec) {
       return num + sec;
    }
  }
}

2.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队。

a.length === 0 ? a.push(1) : a.shift();

3.请把<ul><li>第1行</li><li>第2行</li>...</ul>(ul之间有10个li元素)插入body里面,注意:需要考虑到性能问题。

var lis = "",
ul = document.createElement("ul");

//把li以字符串形式生成
for(var i = 1; i <= 10; i++) {
    lis += "<li>第" + i + "行</li>";
}

// 最后通过innerHTML插入ul里面
ul.innerHTML = lis;

//这里才操作dom,把ul插入到body
document.body.appendChild(ul);

4.不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标。

var a = Array(100).join(",").split(",").map(function(item, index) {
  return index;
});
这个解法充满了曲折啊!先是创建一个数组,然后,通过join方法把它转成字符串,然后,再通过split方法把字符串转成数组,这时候,它就拥有100个值为空的元素了,然后,再通过map函数,改变这些元素的值即可。

6.有一个长度为100的数组,请以优雅的方式求出该数组的前10个元素之和

var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
sum = 0;

sum = a.slice(0, 10).reduce(function(pre, current) {
  return pre + current;
});

console.log(sum); //55
7. 二级域名正则表达式  http://abc.9game.cn/sname/view   中的9game.cn

如下是直接查找二级域名并匹配

var text = `http://w.nnn.cn/ http://www.meilishuo.top/
http://m.meilishuo.com/share/item_detail/3924101135?tab=0
http://product.m.dangdang.com/1181352912.html?
https://h5.m.taobao.com/guang/item.html?spm=a310p.7403370.19980966
http://item.jd.com/1903997.html
http://show.jd.com.cn/1903997.html
http://m.jd.com.tw/1903997.html
https://detail.m.tmall.com/item.htm?spm=a222m.7628550.0.0`;

var urls = text.split(/\s/g);
var domains = urls.map(url => url.match(/((?:\w+\.){2}(?:cn|top|com\.cn|com\.tw|com))/)[1]);
console.log(domains);

8.优先级:&&的优先级高于||

短路:左边的操作可以得出结果,右边的操作可以忽略

   ?:为右关联


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值