站三界导航
首页 JS代码
  • 在 JavaScript 中,return;和return false的区别
    在 JavaScript 中,return;和return false的区别

    当函数执行到return;时,它会返回undefined,并且结束整个函数的执行。也就是说,该行代码下面可能还会有一些逻辑、语句或代码块,但是都不会再被执行到了。而当函数执行到returnfalse;时,则会返回false值,并且结束整个函数的执行。同样,该行代码下面可能还会有一些逻辑、语句或代码块,但是都不会再被执行到了。因此,如果你想在当前函数中执行的某段逻辑上保留决定权,可以使用returnfalse;进行判断。如果你想让后续的函数继续执行其他逻辑,应该使用return;或者直接省略return语句,这样函数将会返回undefined值,但是程序仍然会继续向下执行。

    • JS代码
    • 84阅读
    • 2023-04-23

  • JavaScript的定时器用法
    JavaScript的定时器用法

    setTimeout(),clearInterval()是一个JavaScript方法,用以取消由setInterval()函数设置的定时器。它接受一个参数,即setInterval()返回的ID值。调用clearInterval()后,它会取消指定ID的定时器,因此,执行setInterval()设置的函数将不再被调用。setInterval()和clearInterval()常用于周期性地执行一些代码,例如定时检查更新、定时获取数据等。通过clearInterval()可以方便地中止定时运行的代码。具体用法如下://设置一个每隔1000毫秒执行一次的定时器letintervalID=setInterval(function(){console.log('Helloworld!');},1000);//5秒后停止这个定时器setTimeout(function(){clearInterval(intervalID);console.log('定时器已停止!');},5000);在上述示例中,通过setInterval()设置了一个每隔1秒执行一次的定时器,打印"Helloworld!"。通过setTimeout()在5秒后调用clearInterval()取消这个定时器,结束定时器运行。

    • JS代码
    • 75阅读
    • 2023-04-23

  • JS 字符串转换成数字的三种方法
    JS 字符串转换成数字的三种方法

    方法主要有三种:转换函数、强制类型转换、js变量弱类型转换1.转换函数:js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(NotaNumber)。如下示例:parseInt("1234blue");//returns1234parseInt("0xA");//returns10parseInt("22.5");//returns22parseInt("blue");//returnsNaNparseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的。如下示例:parseInt("AF",16);//returns175parseInt("10",2);//returns2parseInt("10",8);//returns8parseInt("10",10);//returns10如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。如下示例:parseInt("010");//returns8parseInt("010",8);//returns8parseInt("010",10);//returns10parseFloat()方法与parseInt()方法的处理方式相似。使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。下面是使用parseFloat()方法的示例:parseFloat("1234blue");//returns1234.0parseFloat("0xA");//returnsNaNparseFloat("22.5");//returns22.5parseFloat("22.34.5");//returns22.34parseFloat("0908");//returns908parseFloat("blue");//returnsNaN2.强制类型转换使用强制类型转换(typecasting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。ECMAScript中可用的3种强制类型转换如下:Boolean(value)——把给定的值转换成Boolean型;Number(value)——把给定的值转换成数字(可以是整数或浮点数);String(value)——把给定的值转换成字符串。用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。可以用下面的代码段测试Boolean型的强制类型转换:Boolean("");//false–emptystringBoolean("hi");//true–non-emptystringBoolean(100);//true–non-zeronumberBoolean(null);//false-nullBoolean(0);//false-zeroBoolean(newObject());//true–objectNumber()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。如下示例:Number(false);//0Number(true);//1Number(undefined);//NaNNumber(null);//0Number("5.5");//5.5Number("56");//56Number("5.6.7");//NaNNumber(newObject());//NaNNumber(100);//100强制类型转换方法String()是最简单的,如下示例:vars1=String(null);//"null"varoNull=null;vars2=oNull.toString();//won'twork,causesanerror3.利用js变量弱类型转换举个例子,一看就懂。如下示例:varstr='012.345';varx=str-0;x=x*1;

    • JS代码
    • 66阅读
    • 2023-04-09

  • js 数字 转换 百 千 万 亿显示
    js 数字 转换 百 千 万 亿显示

    varchangeUnit=function(value){letnewValue=['','',''];letfr=1000;constad=1;letnum=3;constfm=1;while(value/fr>=1){fr*=10;num+=1;//console.log('数字',value/fr,'num:',num);}if(num<=4){//千newValue[1]='千';newValue[0]=parseInt(value/1000)+'';}elseif(num<=8){//万consttext1=parseInt(num-4)/3>1?'千万':'万';//tslint:disable-next-line:no-shadowed-variableconstfm='万'===text1?10000:10000000;newValue[1]=text1;newValue[0]=(value/fm)+'';}elseif(num<=16){//亿lettext1=(num-8)/3>1?'千亿':'亿';text1=(num-8)/4>1?'万亿':text1;text1=(num-8)/7>1?'千万亿':text1;//tslint:disable-next-line:no-shadowed-variableletfm=1;if('亿'===text1){fm=100000000;}elseif('千亿'===text1){fm=100000000000;}elseif('万亿'===text1){fm=1000000000000;}elseif('千万亿'===text1){fm=1000000000000000;}newValue[1]=text1;newValue[0]=parseInt(value/fm)+'';}if(value<1000){newValue[1]='';newValue[0]=value+'';}returnnewValue.join('');}

    • JS代码
    • 94阅读
    • 2023-03-30

  • JS实现的4种数字千位符格式化方法分享
    JS实现的4种数字千位符格式化方法分享

    所谓的数字千分位形式,即从个位数起,每三位之间加一个逗号。例如“10,000”。针对这个需求,我起初写了这样一个函数:方法一代码如下://方法一functiontoThousands(num){varresult=[],counter=0;num=(num||0).toString().split('');for(vari=num.length-1;i>=0;i--){counter++;result.unshift(num[i]);if(!(counter%3)&&i!=0){result.unshift(',');}}returnresult.join('');}方法一的执行过程就是把数字转换成字符串后,打散为数组,再从末尾开始,逐个把数组中的元素插入到新数组(result)的开头。每插入一个元素,counter就计一次数(加1),当counter为3的倍数时,就插入一个逗号,但是要注意开头(i为0时)不需要逗号。最后通过调用新数组的join方法得出结果。方法一比较清晰易懂,也在项目中用了一段时间。但是直觉告诉我,它的性能并不好。方法二——方法一的字符串版代码如下://方法二functiontoThousands(num){varresult='',counter=0;num=(num||0).toString();for(vari=num.length-1;i>=0;i--){counter++;result=num.charAt(i)+result;if(!(counter%3)&&i!=0){result=','+result;}}returnresult;}方法二是方法一的改良版,不把字符串打散为数组,始终对字符串操作。方法三——循环匹配末尾的三个数字代码如下://方法三functiontoThousands(num){varnum=(num||0).toString(),re=/\d{3}$/,result='';while(re.test(num)){result=RegExp.lastMatch+result;if(num!==RegExp.lastMatch){result=','+result;num=RegExp.leftContext;}else{num='';break;}}if(num){result=num+result;}returnresult;}方法三是完全不同的算法,通过正则表达式循环匹配末尾的三个数字,每匹配一次,就把逗号和匹配到的内容插入到结果字符串的开头,然后把匹配目标(num)赋值为还没匹配的内容(RegExp.leftContext)。此外,还要注意:1.如果数字的位数是3的倍数时,最后一次匹配到的内容肯定是三个数字,但是最前面的三个数字前不需要加逗号;2.如果数字的位数不是3的倍数,那num变量最后肯定会剩下1到2个数字,循环过后,要把剩余的数字插入到结果字符串的开头。虽然方法三减少了循环次数(一次循环处理三个字符),但由于用到了正则表达式,一定程度上增加了消耗。方法四——方法三的字符串版代码如下://方法四functiontoThousands(num){varnum=(num||0).toString(),result='';while(num.length>3){result=','+num.slice(-3)+result;num=num.slice(0,num.length-3);}if(num){result=num+result;}returnresult;}事实上,截取末尾三个字符的功能可以通过字符串类型的slice、substr或substring方法做到。这样就可以避免使用正则表达式。方法五——分组合并法代码如下://方法五functiontoThousands(num){varnum=(num||0).toString(),temp=num.length%3;switch(temp){case1:num='00'+num;break;case2:num='0'+num;break;}returnnum.match(/\d{3}/g).join(',').replace(/^0+/,'');}先把数字的位数补足为3的倍数,通过正则表达式,将其切割成每三个数字一个分组,再通过join方法添加逗号,最后还要把补的0移除。方法六——懒人法代码如下://方法六functiontoThousands(num){return(num||0).toString().replace(/(\d)(?=(?:\d{3})+$)/g,'$1,');}一直觉得这个格式化是可以通过一条正则表达式替换做出来的,但是需要用到断言等写法,无奈自己对这部分不太熟。Google了一下,还真找到了这么一条正则表达式,这估计是代码最短的实现。测试结果数字执行5000次消耗的时间(ms)方法一方法二方法三方法四方法五方法六141311421014130721001212453100013232951000021431631000002132156方法一和方法二的强烈对比表明,字符串操作的效率比数组操作的效率要高得多;方法六的测试结果告诉我们,代码长短跟性能高低没有关系。方法四的综合性能是最好的(但为何num为100的时候,性能有所降低呢,这个实在不解),主要原因是:1.对比方法一、二,每次操作3个字符而不是1个字符,减少循环次数;2.对比方法三、五、六,没有使用正则表达式,减少了消耗。最后,我选择了方法四作为最终的优化方案。各位读者如有更好的实现方法或改良意见,可以发表评论。

    • JS代码
    • 78阅读
    • 2023-03-30

  • JavaScript生成随机颜色方法大全
    JavaScript生成随机颜色方法大全

    不多啰啰,直接上硬货!/***获取指定闭区间的随机数*@parammin最小值*@parammax最大值*@returns{number}*/exportfunctiongetRandomNum(min,max){letresult;if(min<=max){result=Math.floor(Math.random()*(max-min+1)+min);}else{result=Math.floor(Math.random()*(min-max+1)+max);}returnresult;}/***获取随机颜色*@paramalpha透明度*@returns{string}返回rgba颜色*/exportfunctionrandomRGBA(alpha){constr=getRandomNum(0,255);constg=getRandomNum(0,255);constb=getRandomNum(0,255);return`rgba(${r},${g},${b},${alpha})`;}/***获取随机冷色*颜色设计思路:R值===50,0<=G值<=255,150<=B值<=255,这样随机出来的冷色更加柔和,不会产生刺眼的感觉*@paramalpha透明度*@returns{string}返回rgba颜色*/exportfunctionrandomCoolColor(alpha){constr=50;constg=getRandomNum(0,255);constb=getRandomNum(150,255);return`rgba(${r},${g},${b},${alpha})`;}/***获取随机暖色*颜色设计思路:R值===255,0<=G值<=230,B值===50,这样随机出来的暖色更加柔和,不会产生刺眼的感觉*@paramalpha透明度*@returns{string}返回rgba颜色*/exportfunctionrandomWarmColor(alpha){constr=255;constg=getRandomNum(0,230);constb=50;return`rgba(${r},${g},${b},${alpha})`;}/***获取随机色透明渐变效果,函数输入两个透明度,随机色根据透明度参数进行渐变*@paramalpha1透明度1*@paramalpha2透明度2*@returns{string[]}返回随机色透明渐变效果的数组*/exportfunctionrandomTransparentGradient(alpha1,alpha2){constr=getRandomNum(0,255);constg=getRandomNum(0,255);constb=getRandomNum(0,255);return[`rgba(${r},${g},${b},${alpha1})`,`rgba(${r},${g},${b},${alpha2})`];}/***获取随机冷色透明渐变效果,函数输入两个透明度,随机色根据透明度参数进行渐变*颜色设计思路:R值===50,0<=G值<=255,150<=B值<=255,这样随机出来的冷色更加柔和,不会产生刺眼的感觉*@paramalpha1透明度1*@paramalpha2透明度2*@returns{string[]}返回随机色透明渐变效果的数组*/exportfunctionrandomTransparentCoolGradient(alpha1,alpha2){constr=50;constg=getRandomNum(0,255);constb=getRandomNum(150,255);return[`rgba(${r},${g},${b},${alpha1})`,`rgba(${r},${g},${b},${alpha2})`];}/***获取随机暖色透明渐变效果,函数输入两个透明度,随机色根据透明度参数进行渐变*颜色设计思路:R值===255,0<=G值<=230,B值===50,这样随机出来的暖色更加柔和,不会产生刺眼的感觉*@paramalpha1透明度1*@paramalpha2透明度2*@returns{string[]}返回随机色透明渐变效果的数组*/exportfunctionrandomTransparentWarmGradient(alpha1,alpha2){constr=255;constg=getRandomNum(0,230);constb=50;return[`rgba(${r},${g},${b},${alpha1})`,`rgba(${r},${g},${b},${alpha2})`];}/***获取随机渐变色*@paramalpha透明度*@returns{string[]}返回随机渐变色数组*/exportfunctionrandomGradient(alpha){constr=getRandomNum(0,255);constg=getRandomNum(0,255);constb=getRandomNum(0,255);return[`rgba(${r},${g},${b},${alpha})`,`rgba(${r},${g},${b},${alpha})`];}/***获取随机渐变冷色*颜色设计思路:R值===50,0<=G值<=255,150<=B值<=255,这样随机出来的冷色更加柔和,不会产生刺眼的感觉*@paramalpha透明度*@returns{string[]}返回随机渐变色数组*/exportfunctionrandomCoolGradient(alpha){constr=50;constg=getRandomNum(0,255);constb=getRandomNum(150,255);return[`rgba(${r},${g},${b},${alpha})`,`rgba(${r},${g},${b},${alpha})`];}/***获取随机渐变暖色*颜色设计思路:R值===255,0<=G值<=230,B值===50,这样随机出来的暖色更加柔和,不会产生刺眼的感觉*@paramalpha透明度*@returns{string[]}返回随机渐变色数组*/exportfunctionrandomWarmGradient(alpha){constr=255;constg=getRandomNum(0,230);constb=50;return[`rgba(${r},${g},${b},${alpha})`,`rgba(${r},${g},${b},${alpha})`];}/***获取随机暖色渐变到随机冷色*暖色设计思路:R值===255,0<=G值<=230,B值===50,这样随机出来的暖色更加柔和,不会产生刺眼的感觉*冷色设计思路:R值===50,0<=G值<=255,150<=B值<=255,这样随机出来的冷色更加柔和,不会产生刺眼的感觉*@paramwarmColorAlpha暖色透明度*@paramcoolColorAlpha冷色透明度*@returns{string[]}返回随机渐变色数组*/exportfunctionrandomWarmColorToRandomCoolColor(warmColorAlpha,coolColorAlpha){constwr=255;constwg=getRandomNum(0,230);constwb=50;constcr=50;constcg=getRandomNum(0,255);constcb=getRandomNum(150,255);return[`rgba(${wr},${wg},${wb},${warmColorAlpha})`,`rgba(${cr},${cg},${cb},${coolColorAlpha})`];}/***获取随机冷色渐变到随机暖色*暖色设计思路:R值===255,0<=G值<=230,B值===50,这样随机出来的暖色更加柔和,不会产生刺眼的感觉*冷色设计思路:R值===50,0<=G值<=255,150<=B值<=255,这样随机出来的冷色更加柔和,不会产生刺眼的感觉*@paramcoolColorAlpha冷色透明度*@paramwarmColorAlpha暖色透明度*@returns{string[]}返回随机渐变色数组*/exportfunctionrandomCoolColorToRandomWarmColor(coolColorAlpha,warmColorAlpha){constwr=255;constwg=getRandomNum(0,230);constwb=50;constcr=50;constcg=getRandomNum(0,255);constcb=getRandomNum(150,255);return[`rgba(${cr},${cg},${cb},${coolColorAlpha})`,`rgba(${wr},${wg},${wb},${warmColorAlpha})`];}//随机冷色渐变到另一个随机冷色可通过两个randomCoolColor方法实现,因此不再额外封装。//随机暖色渐变到另一个随机暖色可通过两个randomWarmColor方法实现,因此不再额外封装。

    • JS代码
    • 65阅读
    • 2023-03-28

  • js生成随机颜色的两种方法
    js生成随机颜色的两种方法

    1.rgb颜色生成functionrgb(){//rgb颜色随机constr=Math.floor(Math.random()*256);constg=Math.floor(Math.random()*256);constb=Math.floor(Math.random()*256);return`rgb(${r},${g},${b})`;}2.十六进制颜色生成functioncolor16(){//十六进制颜色随机constr=Math.floor(Math.random()*256);constg=Math.floor(Math.random()*256);constb=Math.floor(Math.random()*256);constcolor=`#${r.toString(16)}${g.toString(16)}${b.toString(16)}`;returncolor;}

    • JS代码
    • 62阅读
    • 2023-03-28

  • js生成随机背景色和字体颜色方法示例
    js生成随机背景色和字体颜色方法示例

    //生成随机背景色和字体颜色functionrandomBgAndFontColor(){letbgColor=randomColor();letfontColor='#ffffff';//默认字体颜色为白色letcolorValue=parseInt(bgColor.slice(1),16);//将背景色转化为数值letgray=(colorValue>>16)*0.299+(colorValue>>8&0x00FF)*0.587+(colorValue&0x0000FF)*0.114;//计算灰度值if(gray>192){fontColor='#000000';//如果灰度值大于192,说明背景色比较浅,字体颜色应该为黑色}return{bgColor:bgColor,fontColor:fontColor};}

    • JS代码
    • 57阅读
    • 2023-03-28

  • js两个数组对比,相同键名并修改元素方法
    js两个数组对比,相同键名并修改元素方法

    在JavaScript中,可以使用Array的forEach方法和Object的keys方法对比两个数组中键名相同的元素,并修改其对应的值。具体步骤如下:1.定义原始数组假设有两个原始数组arr1和arr2,其中每个元素都有一个id和name属性:letarr1=[{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];letarr2=[{id:1,value:100},{id:2,value:200},{id:4,value:400}];2.对比数组并修改元素使用forEach方法遍历arr1数组,使用Object的keys方法获取每个元素的id属性值,在arr2数组中查找该id对应的元素,如果找到了,则将arr1数组中的name属性替换成arr2数组中的value属性。例如:arr1.forEach(item=>{letid=item.id;letindex=arr2.findIndex(subItem=>subItem.id===id);if(index!==-1){item.name=arr2[index].value;}});以上代码中,使用forEach方法遍历arr1数组,使用findIndex方法查找arr2数组中id属性值为item.id的元素的索引,如果找到了,则将arr1数组中对应元素的name属性替换成arr2数组中对应元素的value属性。3.查找的元素不存在的情况如果查找的元素在arr2数组中不存在,需要进行判断。例如,将arr1数组中的id为4的元素的name属性替换成value属性:letid=4;letindex=arr2.findIndex(item=>item.id===id);if(index!==-1){arr1.forEach(item=>{if(item.id===id){item.name=arr2[index].value;}});}以上代码中,使用findIndex方法查找arr2数组中id属性值为4的元素

    • JS代码
    • 67阅读
    • 2023-03-26

  •  js查询数组中指定键值并修改元素
    js查询数组中指定键值并修改元素

    在JavaScript中,可以使用Array的findIndex方法查找数组中指定键值的元素的索引,然后再使用splice方法将该元素替换成新的元素。具体步骤如下:1.定义原始数组假设有一个原始数组arr,其中每个元素都有一个id和name属性:letarr=[{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];2.查找并修改元素使用findIndex方法查找元素的索引,然后使用splice方法将该元素替换成新的元素。例如,修改id为2的元素的name属性为'd':letindex=arr.findIndex(item=>item.id===2);//查找id为2的元素索引if(index!==-1){//如果找到了arr.splice(index,1,{id:2,name:'d'});//使用splice方法替换元素}以上代码中,使用findIndex方法查找id为2的元素的索引,如果找到了,就使用splice方法将该元素替换成{id:2,name:'d'}。3.查找的元素不存在的情况如果查找的元素不存在,findIndex方法会返回-1,需要进行判断。例如,修改id为4的元素的name属性为'e':letindex=arr.findIndex(item=>item.id===4);//查找id为4的元素索引if(index!==-1){//如果找到了arr.splice(index,1,{id:4,name:'e'});//使用splice方法替换元素}else{//如果没找到arr.push({id:4,name:'e'});//添加新元素}以上代码中,如果查找的元素不存在,就使用push方法添加新元素{id:4,name:'e'}。

    • JS代码
    • 436阅读
    • 2023-03-26

站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。