JavaScript面试题整理

var len = domList.length;  //缓存到局部变量

while (len–) {  //使用while的效率会比for循环更高

if (domList[len].type == ‘checkbox’) {

checkBoxList.push(domList[len]);

}

}

7.当一个DOM节点被点击时候,希望执行一个函数,应该怎么做?

直接在DOM里绑定事件:

在JS里通过onclick绑定:xxx.onclick = test

通过事件添加进行绑定:addEventListener(xxx, ‘click’, test)

8.javascript的事件流模型

“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播

“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的

“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡

9.什么是ajax和json?优缺点

Ajax是异步JavaScript和XML,用于在Web页面中实现异步数据交互。

优点: 可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量 避免用户不断刷新或者跳转页面,提高用户体验

缺点: 对搜索引擎不友好( 要实现ajax下的前后退功能成本较大 可能造成请求数的增加 跨域问题限制 JSON是一种轻量级的数据交换格式,ECMA的一个子集 优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持复合数据类型(数组、对象、字符串、数字)

10.输出var a;alert(typedef a); // undefined alert(b); // 报错

Undefined是一个只有一个值的数据类型,这个值就是“undefined”,在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。

11.var a=null;alert(typedef a);

null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。

12.Var underfined; undefind=null; 1=true; 0=false; 0=’’; []=false; []=![];

var undefined;

undefined == null; // true

1 == true; // true

2 == true; // false

0 == false; // true

0 == ‘’; // true

NaN == NaN; // false

[] == false; // true

[] == ![]; // true

undefined与null相等,但不恒等(===)

一个是number一个是string时,会尝试将string转换为number

尝试将boolean转换为number,0或1

尝试将Object转换成number或string,取决于另外一个对比量的类型

所以,对于0、空字符串的判断,建议使用 “===” 。

“===”会先判断两边的值类型,类型不匹配时为false。

详细解释请点击:

https://blog.csdn.net/liuwengai/article/details/52628652?utm_source=copy

13.输出今天的日期 格式YYYY-MM-DD 2018-09-10

var d = new Date();

var year = d.getFullYear(); // 获取年,getFullYear()返回4位的数字

var month = d.getMonth() + 1; // 获取月,月份比较特殊,0是1月,11是12月

month = month < 10 ? ‘0’ + month : month; // 变成两位

var day = d.getDate(); // 获取日

day = day < 10 ? ‘0’ + day : day; // 变成两位

alert(year + ‘-’ + month + ‘-’ + day);

14.

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

setTimeOut(function(){

console.log(i);

},0);

}

setTimeout是异步的代码,即使setTimeout中设置的等待时间为0也不会立刻执行,for循环代码是同步,所以要等待for循环执行完以后才会执行setTimeout。

上面这个代码块会打印三个 4 出来,而我们预想的结果是打印 1 2 3 。

之所以会这样,是因为 setTimeout 中的 i 是对外层 i 的引用。当 setTimeout 的代码被解释的时候,运行时只是记录了 i 的引用,而不是值。而当 setTimeout 被触发时,三个 setTimeout 中的 i 同时被取值,由于它们都指向了外层的同一个 i,而那个 i 的值在迭代完成时为 4,所以打印了三次 4

全文地址请点击:

https://blog.csdn.net/u012872875/article/details/52601477?utm_source=copy

15.数组和对象有哪些原生方法,列举一下?

Array.concat( ) 连接数组

Array.join( ) 将数组元素连接起来以构建一个字符串

Array.length 数组的大小

Array.pop( ) 删除并返回数组的最后一个元素

Array.push( ) 给数组添加元素

Array.reverse( ) 颠倒数组中元素的顺序

Array.shift( ) 将元素移出数组

Array.slice( ) 返回数组的一部分

Array.sort( ) 对数组元素进行排序

Array.splice( ) 插入、删除或替换数组的元素

Array.toLocaleString( ) 把数组转换成局部字符串

Array.toString( ) 将数组转换成一个字符串

Array.unshift( ) 在数组头部插入一个元素

Object.hasOwnProperty( ) 检查属性是否被继承

Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型

Object.propertyIsEnumerable( ) 是否可以通过for/in循环看到属性

Object.toLocaleString( ) 返回对象的本地字符串表示

Object.toString( ) 定义一个对象的字符串表示

Object.valueOf( ) 指定对象的原始值

16.数组的判断?
17.window.onload和documentready的区别

window.onload 是在dom文档树加载完和所有文件加载完之后执行一个函数

document.ready原生中没有这个方法,jquery中有 $().ready(function),在dom文档树加载完之后执行一个函数(注意,这里面的文档树加载完不代表全部文件加载完)。

( d o c u m e n t ) . r e a d y 要 比 w i n d o w . o n l o a d 先 执 行 w i n d o w . o n l o a d 只 能 出 来 一 次 , (document).ready要比window.onload先执行 window.onload只能出来一次, (document).ready要比window.onload先执行window.onload只能出来一次,(document).ready可以出现多次.

18.什么 是rpx?

rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。

以iphone6的物理像素750*1334为视觉稿进行设计,而在小程序中使用rpx为单位

iphone6下 1px = 1rpx = 0.5pt

使用rpx小程序会在不同分辨率的设备下自动进行转换,而px不会建议设计团队按iphone6来做设计图,因为

Iphone6 1px=1rpx

Iphone6 plus 1px=0.6rpx

Iphone6换算比较方便。

不是所有的单位都适合rpx,字体不适合rpx,会导致不同设备看不清

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)


后记


总结一下这三次面试下来我的经验是:

  1. 一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

  2. 代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

  3. 尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

  4. 多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】免费获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容



/618191877 )免费获取。祝大家早日拿到自己心怡的工作!**

篇幅有限,仅展示部分内容



  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值