2024最新前端JavaScript面试题集锦(二)(满满都是干货)_typeof运算符返回值中有一个跟

最后

如果你已经下定决心要转行做编程行业,在最开始的时候就要对自己的学习有一个基本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

json[str.charAt(i)]++;

}

};

var iMax = 0;

var iIndex = ‘’;

for(var i in json){

if(json[i]>iMax){

iMax = json[i];

iIndex = i;

}

}

alert(‘出现次数最多的是:’+iIndex+‘出现’+iMax+‘次’);

******50.**写一个获取非行间样式的函数

function getStyle(obj,attr,value)

{

if(!value)

{

if(obj.currentStyle)

{

return obj.currentStyle(attr);

}

else{

obj.getComputedStyle(attr,false);

}

}

else

{

obj.style[attr] = value;

}

}

51.字符串反转,如将’12345678’ 变成**‘87654321’******

//思路:先将字符串转换为数组 split(),利用数组的反序函数 reverse()颠倒数组,再利 用 jion() 转换为字符串

var str = ‘12345678’;

str = str.split(‘’).reverse().join(‘’);

52.将数字12345678 ****转化成RMB形式******如:**12,345,678

//思路:先将数字转为字符, str= str + ‘’ ;

//利用反转函数,每三位字符加一个 ','最后一位不加; re()是自定义的反转函数,最后再反转回去!

function re(str) {

str += ‘’;

return str.split(“”).reverse().join(“”);

}

function toRMB(num) {

var tmp=‘’;

for (var  i  =  1;  i  <=  re(num).length;  i++) {

tmp  +=  re(num)[i  -  1];

if (i  %  3  ==  0  &&  i  !=  re(num).length) {

tmp  +=  ‘,’;

}

}

return re(tmp);

}

53.生成5个不同的随机数;****

//思路:5个不同的数,每生成一次就和前面的所有数字相比较,如果有相同的,则放 弃当前生成的数字!

var num1 = [];

for(var i = 0; i < 5; i++){

num1[i] = Math.floor(Math.random()*10) + 1; //范围是 [1, 10]

for(var j = 0; j < i; j++){

if(num1[i] == num1[j]){

i–;

}

}

}

******54.**去掉数组中重复的数字

方法一:

//思路:每遍历一次就和之前的所有做比较,不相等则放入新的数组中!

//这里用的原型 个人做法;

Array.prototype.unique = function(){

var len = this.length,

newArr = [],

flag = 1;

for(var i = 0; i < len; i++, flag = 1){

for(var j = 0; j < i; j++){

if(this[i] == this[j]){

flag = 0;        //找到相同的数字后,不执行添加数据

}

}

flag ? newArr.push(this[i]) : ‘’;

}

return newArr;

}

方法二:

var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];

Array.prototype.unique2 = function()

{

var n = []; //一个新的临时数组

for(var i = 0; i < this.length; i++) //遍历当前数组

{

//如果当前数组的第i已经保存进了临时数组,那么跳过,

//否则把当前项push到临时数组里面

if (n.indexOf(this[i]) == -1) n.push(this[i]);

}

return n;

}

var newArr2=arr.unique2(arr);

alert(newArr2); //输出1,2,3,4,5,6,9,25

******55.**阶乘函数;

//原型方法

Number.prototype.N = function(){

var re = 1;

for(var i = 1; i <= this; i++){

re *= i;

}

return re;

}

var num = 5;

alert(num.N());

56.window.location.search() 返回的是什么?

http://localhost:8080/xxx?ver=1.0&id=123

返回值:?ver=1.0&id=timlq 也就是问号后面的部分

57.window.location.reload() 作用?

刷新当前页面。

58.javascript 中的垃圾回收机制?

在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再  被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么  函数a执行后不会被回收的原因。

59.精度问题: JS ****精度不能精确到0.1**** 所以。。。。同时存在于值和差值中****

var n = 0.3,m = 0.2, i = 0.2, j = 0.1;

alert((n - m) == (i - j)); //false

alert((n-m) == 0.1); //false

alert((i-j)==0.1); //true

******60.**计算字符串字节数:

new function(s){

if(!arguments.length||!s) return null;

if(“”==s) return 0;

var l=0;

for(var i=0;i<s.length;i++){

if(s.charCodeAt(i)>255) l+=2; else l+=1;  //charCodeAt()得到的是unCode码

}     //汉字的unCode码大于 255bit 就是两个字节

alert(l);

}(“hello world!”);

61.匹配输入的字符:第一个必须是字母或下划线开头,长度5-20

var reg = /1[a-zA-Z0-9_]{5,20}/,

name1 = ‘leipeng’,

name2 = ‘0leipeng’,

name3 = ‘你好leipeng’,

name4 = ‘hi’;

alert(reg.test(name1));

alert(reg.test(name2));

alert(reg.test(name3));

alert(reg.test(name4));

62.如何在HTML中添加事件,几种方法?****

1、标签之中直接添加 οnclick=“fun()”;

2、JS添加 Eobj.onclick = method;

3、绑定事件  IE: obj.attachEvent(‘onclick’, method);

FF: obj.addEventListener(‘click’, method, false);

63**.**你如何优化自己的代码?

代码重用

避免全局变量(命名空间,封闭空间,模块化mvc…)

拆分函数避免函数过于臃肿

注释

64**.使用js实现这样的效果:在文本域里输入文字时,当按下enter键时不换行,而是替换成“{{enter}},(只需要考虑在行尾按下enter键的情况).******

function back(ele,event){

event = event || window.event;

if(event.keyCode==13){

event.returnValue = false;

ele.value+=“{{enter}}”

return false;

}

}

65.简述readonlydisabled的区别****

ReadOnly和Disabled的作用是使用户不能够更改表单域中的内容.

但是二者还是有着一些区别的:

1、Readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单 元素有效,包括select,radio,checkbox,button等。

2、在表单元素使用了disabled后,我们将表单以POST或者GET的方式提交的话,这 个元素的值不会被传递出去,而readonly会将该值传递出去

66.为什么扩展javascript内置对象不是好的做法?****

因为你不知道哪一天浏览器或javascript本身就会实现这个方法,而且和你扩展的实现有不一致的表现。到时候你的javascript代码可能已经在无数个页面中执行了数年,而浏览器的实现导致所有使用扩展原型的代码都崩溃了。。。

******67.**什么是三元表达式?“三元”表示什么意思?

三元运算符:

三元如名字表示的三元运算符需要三个操作数。

语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分 隔的结果1和结果2。满足条件时结果1否则结果2。

******68.**变量的命名规范以及命名推荐

变量,函数,方法:小写开头,以后的每个单词首字母大写 (驼峰)

构造函数,class:每个单词大写开头

基于实际情况,以动词,名词,谓词来命名。尽量言简意骇,以命名代替注释

******69.**三种弹窗的单词以及三种弹窗的功能

1.alert

//弹出对话框并输出一段提示信息

function ale() {

//弹出一个对话框

alert(“提示信息!”);

}

2.confirm

//弹出一个询问框,有确定和取消按钮

function firm() {

//利用对话框返回的值 (true 或者 false)

if (confirm(“你确定提交吗?”)) {

alert(“点击了确定”);

}

else {

alert(“点击了取消”);

}

}

3.prompt

//弹出一个输入框,输入一段文字,可以提交

function prom() {

var name = prompt(“请输入您的名字”, “”); //将输入的内容赋给变量 name ,

//这里需要注意的是,prompt有两个参数,前面是提示的话,后面是当对话框出来后,在对话框里的默认值

if (name)//如果返回的有内容

{

alert(“欢迎您:” + name)

}

}

******70.**主流浏览器内核

IE trident        火狐gecko    谷歌苹果webkit    Opera:Presto

71.JavaScript的循环语句有哪些?****

for,for…in,while,do…while

72.闭包:下面这个ul**,如何点击每一列的时候alertindex?******

    • 这是第一条
    • 这是第二条
    • 这是第三条
    • //js

      window.onload = function() {

      var lis = document.getElementById(‘test’).children;

      for (var i = 0; i < lis.length; i++) {

      lis[i].onclick = (function(i) {

      return function() {

      alert(i)

      };

      })(i);

      };

      }

      73.列出3条以上ffIE的脚本兼容问题****

      (1) window.event:

      表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象

      (2) 获取事件源

      IE用srcElement获取事件源,而FF用target获取事件源

      (3) 添加,去除事件

      IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)

      最后

      开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

      or (var i = 0; i < lis.length; i++) {

      lis[i].onclick = (function(i) {

      return function() {

      alert(i)

      };

      })(i);

      };

      }

      73.列出3条以上ffIE的脚本兼容问题****

      (1) window.event:

      表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象

      (2) 获取事件源

      IE用srcElement获取事件源,而FF用target获取事件源

      (3) 添加,去除事件

      IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)

      最后

      开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

      [外链图片转存中…(img-ki8h5vx2-1715769425280)]


      1. a-zA-Z_ ↩︎

    • 5
      点赞
    • 3
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值