前端面试题-js逻辑代码题 - Go语言中文社区

前端面试题-js逻辑代码题


JS实现对货币格式化函数

1.// 调用示例
2. formatMoney(1234567890); // 返回 1,234,567,890

function formatMoney(str){
	var result = '';
	var counter = 0;
    num = num.toString();
    for (var i = num.length - 1; i >= 0; i--) {
        counter++;
        result = num.charAt(i) + result;
        if (!(counter % 3) && i != 0) { result = ',' + result; }
    }
    return result;
    
    //还有一种正则的表示方式
    return (num || 0).toString().replace(/(d)(?=(?:d{3})+$)/g, '$1,');
    // (?=):正向零宽断言
	// d{3}:匹配三个数字字符
	// +:与前面的d{3}结合表示匹配3的整数倍个数字字符
	// $:字符串结尾
	// 所以合起来的意思就是:匹配单词中的某个位置,这个位置之后的字符全部为数字,且出现次数是3的整数倍。
	}

返回数组里出现次数最多的数字

  1. // 调用示例
  2. MostNumber([1, 2, 2, 1, 3, 1, 1]); // 返回 1
function MostNumber(arr){
    var obj = {};

    for (var i = 0; i < arr.length; i++) {
      var res = arr[i]
      if (obj[res] == undefined) {
        obj[res] = 1;
      } else {
        obj[res] += 1;
      }
    }
    console.log(obj);


    var max = '0'
    var maxValue = 0;
    for (var k in obj) {
      if (maxValue < obj[k]) {
        max = k;
        maxValue = obj[k]
      }
    }
    console.log(`出现最大的数为${max},次数为${maxValue}`);
}

在这里插入图片描述
请写出以下代码的执行结果

1. setTimeout(function() {
2. console.log('setTimeout');
3. })
4. new Promise(function(resolve) {
5. console.log('promise');
6. for (let i = 0; i < 10000; i++){
7. if(i === 10) {
8. console.log('for');
9. }
10. i == 9999 && resolve('resolve');
11. }
12. }).then(function(val) {
13. console.log(val);
14. })
15. console.log('console');

盲点:
promise是一个同步任务,promise.then是一个异步任务
promise里面的resolve是微任务先执行,setTimeout是宏任务后执行
在这里插入图片描述

结果为:
promise->for->console->resolve->setTimeout

以下是一个页面的代码,请写出用户点击了div后控制台的输出结果

1. <body>
2. 		<div id="i"/>
3. </body>
4.
5. <script>
6. document.body.addEventListener("mousedown", () => {
7. 		console.log("key1")
8. }, true)
9.
10. document.getElementById("i").addEventListener("mousedown", () => {
11. 	console.log("key2")
12. }, true)
13.
14. document.body.addEventListener("mousedown", () => {
15. 	console.log("key3")
16. }, false)
17.
18. document.getElementById("i").addEventListener("mousedown", () => {
19. 	console.log("key4")
20. }, false)
21. </script>

涉及到的知识点:

element.addEventListener(event, function, useCapture)
在这里插入图片描述

结果为:
key1->key2->key4->key3

写出以下代码执行结果,并简单解释

1. function showName() {
2. console.log('Toutiao');
3. }
4. showName();
5. function showName() {
6. console.log('OceanEngine');
7. }
8. showName();
9. // ----
10. var myname = "abc"
11. function showName2(){
12. console.log(myname);
13. var myname = "aabbcc"
14. console.log(myname);
15. }
16. showName2();
17. // ----
18. let myname3= 'toutiao'
19. {
20. console.log(myname3)
21. let myname3= 'oceanengine'
22. }

涉及到的知识点:
声明变量提生,函数声明提生

结果:
‘OceanEngine’,‘OceanEngine’,undefined,aabbcc,报错

JS cookie访问指定key的value值的方法

		/* 定义一个cookie并给其设置一部分数据 */
        
        document.cookie = "key1 = value1";

        document.cookie = "key2 = 1234abcd";

        var d = new Date();
        d.setDate(d.getDate() + 3); //按天数设置
        document.cookie = "key3 = 中国人民共和国万岁; expires=" + d;//即使设置了expires有效期/domain域名/path目录;也不影响使用
        
        document.cookie = 'key4 ='+escape('123; abc=23;@#$%');//编码,避免数据中的特殊字符"; "和"="对字符串切割出错
        
        /* 获得cookie字符串 */
        var cookieString = document.cookie;
        //console.log(cookieString);//key1=value1; key2=value2; key3=value3
        // console.log(typeof cookieString);//string

        /* 用.split()的方法切割字符串 返回一个数组cookieArr*/
        var cookieArr = cookieString.split("; ")//在返回的cookie字符串cookieString中,每条cookie值以"; "分隔(注意分号";"后面有空格" ")
        // console.log(cookieArr);
        // console.log(typeof cookieArr);//返回一个数组 object
        
        /* 切割cookieArr数组,并将值保存在对象cookies中 */
        var cookies = {};
        for (let i = 0; i < cookieArr.length; i++) {
            let cookieKey = cookieArr[i].split("=")[0];
            // let cookieValue = cookieArr[i].split("=")[1];
            let cookieValue = unescape(cookieArr[i].split("=")[1]);//解码
            cookies[cookieKey] = cookieValue;
        }

        /* 验证:用对象的方法查询cookies对象即可 */
        document.write("key1 的值为: "+cookies.key1+"<br>");
        document.write("key2 的值为: "+cookies.key2+"<br>");
        document.write("key3 的值为: "+cookies.key3+"<br>");
        document.write("key4 的值为: "+cookies.key4+"<br>");
        // document.write("打印所有key和其对应的value值: "+cookies+"<br>");
        console.log('打印所有key和其对应的value值:');
        console.log(cookies);

结果:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/asd577007722/article/details/115257373
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-10 18:35:34
  • 阅读 ( 1243 )
  • 分类:面试题

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢