首页 > 其他分享 >JS面试题

JS面试题

时间:2024-03-01 12:11:26浏览次数:24  
标签:面试题 return sum JS let result func carry

1.判断一个函数是否标记为 async

function isAsyncFunction(func){
    const str=Object.prototype.toString.call(func);
    return str=='[object AsyncFunction]';
}

2.两个大整数之和

/**
* 1.将两个数字对齐
* 2.从后往前循环,按位相加同时加上进位
* 3.计算进位
* 4.到最后一位时,如果有进位则加上进位
*/
function sum(a,b){
	const len =Math.max(a.length,b.length);
	a=a.padStart(len,'0');
	b=b.padStart(len,'0');
	let carry=0;
	let result='';
	for(let i=len-1;i>=0;i--){
		const sum=+a[i] + +b[i] +carry;
		result=(sum%10) + result;
		carry=Math.floor(sum/10);
	}
	if(carry){
		result=carry + result;
	}
	return result;
}

3.模拟微队列

function runMicroTask(func){
	//promise 存在的情况
	if(typeof Promise !=='undefined'){
	  Promise.resolve().then(func);
	  return ;
	}
	//使用MutationObserver
	if(typeof MutationObserver!=='undefined'){
		var observer=new MutationObserver(func);
		var textNode=document.createTextNode("1");
		observer.observe(textNode,{characterData: true});
		textNode.data='2';
		return;
	}
	// node 环境
	if(process && process.nextTick){
		process.nextTick(func);
		return;
	}
	setTimeout(func);
}

4.剩余参数

当函数参数不定的时候,这个时候可以使用剩余参数

function sum(...args){
    let r=0;
    for(let i=0;i<args.length;i++){
        r+=args[i];
    }
    return r;
}
sum(1,2)
sum(1,2,3)

如果函数不止一个参数,剩余参数只作为最后一个参数使用。

5. 多层循环跳出

如果有两层循环,当第二层循环满足条件时需要跳出循环,可以jslabel 跳出循环。

outer: for(i=0;i<10;i++){
    console.info("i",i);
    for(j=0;j<10;j++){
        console.info("j",j);
        if(j==5){
            break outer;
        }
    }
}

标签:面试题,return,sum,JS,let,result,func,carry
From: https://www.cnblogs.com/yg_zhang/p/18031568

相关文章

  • js使用a标签下载文件并指定名称
    当使用js下载路径带有xxxxx.png的路径图片时,下载下来的名称一直是xxxxx.png,有时候又需要指定文件名称,代码如下downFile(ShowUrl,Name){//ShowUrl表示路径Name表示需要的名称constx=newwindow.XMLHttpRequest();x.open('GET',ShowUrl,true);x.resp......
  • JS/Vue 学习小记
    可能要写点轮子。。。先学学前端知识吧,记录一下。遍历:for(letiofS){i...}for(letiinS){S[i]...}JS是弱类型的语言。目前感觉到的特性有:数组不同元素可以是不同类型的函数返回值不需要声明,直接functionF()就可以JS中对象用大括号表示,成员可以是各种类型,包......
  • Nest.js 大文件分片上传
    文件上传是常见需求,只要指定content-type为multipart/form-data,内容就会以如下图这种形式传递到服务端:服务端再按照multipart/form-data的格式提取数据,就能达到其中的文件。 但是当文件很大的时候,事情变得不一样了假设传一个100M的文件需要三分钟,那么传1G的文件就需要30......
  • 面试必备!《1000多道互联网Java工程师面试题》分享
    资料领取见文末!在当今互联网时代,Java作为一种广泛应用的编程语言,在互联网行业中扮演着至关重要的角色。无论是初学者还是有经验的开发者,不断学习和提升自己的Java技能都是至关重要的。而《1000多道互联网Java工程师面试题》这份资料提供了一个绝佳的机会,让你深入了解并加强对Java......
  • 记账本jsp
     <%@pagecontentType="text/html;charset=UTF-8"language="java"%><!DOCTYPEhtml> <html><head><metacharset="UTF-8"> <title>家庭记账本主页</title> <!--采用绝对路径导入css文件--> <linkrel=&......
  • jsp自定义标签
    一、自定义标签的作用自定义标签主要用于移除Jsp页面中的java代码。二、自定义标签开发和使用2.1、自定义标签开发步骤1、编写一个实现Tag接口的Java类(标签处理器类)1packageme.gacl.web.tag;23importjava.io.IOException;45importjavax.servl......
  • Livewire 和 Alpine.js比较
    Livewire和Alpine.js是两个在构建交互式Web应用程序时常用的工具,它们在一些方面有相似之处,但也有一些关键区别。Livewire基于Laravel:Livewire是Laravel的一部分,与Laravel框架紧密集成,使得开发者可以使用Laravel的语法和功能来构建动态页面。服务器端渲染:Livew......
  • jq ajax传递json对象到服务端及contentType的用法
    目录0、一般情况下,通过键值对的方式将参数传递到服务端0.1客户端代码:0.2服务端代码:0.3在浏览器的网络中查看此次请求:1、ajax传递复杂json对象到服务端1.1方法一:通过formdata传值,服务端通过key获取值;1.2方法二:通过formdata方式传值,服务端读取Request.InputStrea......
  • require.js
    require.js的加载使用require.js的第一步,是先去官方网站下载最新版本。下载后,假定把它放在js子目录下面,就可以加载了。<scriptsrc="js/require.js"></script>有人可能会想到,加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下......
  • 数组对象删除不满足某些条件的对象 js
    recursiveFunction(items,childrenNodeName,ids){console.log('items',ids);//获取数组长度if(items)items=[];letlen=items?.length//循环遍历数组for(leti=0;i<len;i++){//如果有子节点,递归遍历......