前端工程师Js笔试常见题

前端跨浏览器开发 前端模块化开发流程图 idea前端开发环境搭建

1.生成不重复随机数
javascript 代码

function createRandomNum(min, max, num) {
    //min最小值,max最大值,num生成的个数
    var randomNum = []
    //生成对应数量的随机数
    for (var i = 0; i < num; i++) {
        randomNum[i] = myRandom(min, max)
    }
    var j = 0
    var o = {}
    //去重操作,如果存在则重新生成一个随机数
    do {
        if (!o[randomNum[j]]) {
            o[randomNum[j]] = 1
            j++
        } else {
            randomNum[j] = myRandom(min, max)
        }
    } while (j < num)
    // return randomNum.sort(sortNumber);
    return randomNum
}
//生成随机数函数
function myRandom(min, max) {
    var x = max – min + 1
    return Math.floor(Math.random() * x) + min
}
function sortNumber(a, b) {
    return a – b
}
console.log(createRandomNum(1, 30, 20))

2.写出2-3个数组去重的方法
javascript 代码

//第一种方法:
//1.创建一个新的数组存放结果
//2.for循环每次从原数组中取出一个元素,用这个元素循环和结果数组对比
//3.如果结果数组中没有该元素,存入结果数组
function my_unique1(arr) {
    var result = [arr[0]]
    var l = arr.length
    for (var i = 1; i < l; i++) {
        var flag = false
        //这里要动态获取result数组的长度
        for (var j = 0; j < result.length; j++) {
            if (arr[i] === result[j]) {
                flag = true
                break
            }
        }
        if (!flag) {
            result.push(arr[i])
        }
    }
    return result
}
var arr = [1, ‘a’, ‘a’, ‘b’, ‘d’, ‘e’, ‘e’, 1, 0]
console.log(my_unique1(arr))
//第二种方法:
//1.先将原数组进行排序
//2.检查原数组中的第i个元素 是否与结果数组的最后一个相同
//3.若不相同,将该元素存入结果数组中
function my_unique2(arr) {
    var arr = arr.sort()
    var result = [arr[0]]
    var l = arr.length
    for (var i = 1; i < l; i++) {
        if (arr[i] !== result[result.length – 1]) {
            result.push(arr[i])
        }
    }
    return result
}
var arr = [1, ‘a’, ‘a’, ‘b’, ‘d’, ‘e’, ‘e’, 1, 0]
console.log(my_unique2(arr))
//第三种方法:
//1.创建一个新的数组存放结果
//2.创建一个空对象
//3.for循环时每次取出一个元素与对象进行对比,如果不存在,则把这个元素作为对象的一个属性,并赋值为1
function my_unique3(arr) {
    var result = []
    var o = {}
    var l = arr.length
    for (var i = 0; i < l; i++) {
        if (!o[arr[i]]) {
            result.push(arr[i])
            o[arr[i]] = 1
        }
    }
    return result
}
var arr = [1, ‘a’, ‘a’, ‘b’, ‘d’, ‘e’, ‘e’, 1, 0]
console.log(my_unique3(arr))

3.写一个简单的闭包
javascript 代码

function add() {
    var i = 1
    return function() {
        return i++
    }
}
var count = add()
console.log(count()) //1
console.log(count()) //2
console.log(count()) //3

4.手写insertAfter()函数
javascript 代码

function insertAfter(newEle, tgtEle) {
    var parent = tgtEle.parentNode
    //如果要插入的目标节点是最后一个节点.直接append在最后
    if (tgtEle == parent.lastChild) {
        parent.appendChild(newEle)
        //否则,插入在目标节点的下一个节点的前面,也就是目标节点的后面
    } else {
        parent.insertBefore(newEle, tgtEle.nextSibling)
    }
}

看下列==输出什么.
==比较规则:
1.有一个是布尔值,比较前先把布尔值转换为1,0
2.一个是字符串,一个是数值,比较前先把字符串转换为数值
3.一个是对象,一个不是.调用对象的valueOf()方法,得到的基本类型按前面的规则比较.
4.两个都是对象,比较是否指向同一个对象.是返回true,否则返回false.
5.null和undefined相等
6.NaN和任何参数都不等
7.要比较相等性之前,不能将null和undefined转换成其它值
javascript 代码

undefined == null; //true
undefined == true; //false
undefined == false; //false
null == true; //false
null == false; //false
1 == true; //true
2 == true; //false,这里是自动把true,false转换为1,0
0 == false; //true
0 == “”; //true
NaN == NaN; //false,NaN不等于NaN
[] == false; //true
[] == []; //false,两个[]的地址不同
[] == ![]; //true //这里![]等于false
var obj = {};
obj == true; //false
obj == false; //false,理由见第7点

把下划线命名转换为驼峰命名.
javascript 代码

function changeStyle(name) {
    //把下划线命名的名字按_分割
    var result = name.split(‘_’)
    var l = result.length
    //从第二个词开始,驼峰第一个单词是小写
    for (var i = 1; i < l; i++) {
        //substr()接受两个参数,起始位置(0开始,如果是负数则指从尾部开始算起的位置,-1指最后一个元素)
        //长度(可选,不写时默认到尾部)
        result[i] = result[i].charAt(0).toUpperCase() + result[i].substr(1)
    }
    return result.join(”)
}
var testName = ‘get_element_by_id’
console.log(changeStyle(testName))

以YYYY-MM-DD的形式输出今天日期
javascript 代码

function showTime() {
    var date_now = new Date()
    var year = date_now.getFullYear()
    var month = date_now.getMonth() + 1
    var day = date_now.getDate() //getDate获得日期,getDay()获得星期几,0周末
    month = check(month)
    day = check(day)
    var result = year + ‘-‘ + month + ‘-‘ + day
    return result
}
//日期小于10,前面补0填充
function check(t) {
    if (t < 10) {
        t = ‘0’ + t
    }
    return t
}
console.log(showTime())
前端开发棋牌游戏 前端开发中浏览器兼容问题 前端与游戏程序开发哪一个好
» 本文来自:前端开发者 » 《前端工程师Js笔试常见题》
» 本文链接地址:https://www.rokub.com/5408.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!