html如何获取消息实体的长度,50道js面试题 XXXXX

1. javascript的typeof返回哪些数据类型

答案:string,boolean,number,undefined,function,object

2. 例举3种强制类型转换和2种隐式类型转换?

答案:强制(parseInt,parseFloat,number)隐式(== ===)

注:parseInt把值转换成整数,parseFloat把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。

16. ”==”和“===”的不同

答案:前者会自动转换类型,再判断是否相等

后者不会自动类型转换,直接去比较

3. split() join() 的区别

答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串

4. 数组方法pop() push() unshift() shift()

答案:push()尾部添加 pop()尾部删除 unshift()头部添加 shift()头部删除

5. IE和标准下有哪些兼容性的写法

答案:

var ev = ev || window.event

document.documentElement.clientWidth || document.body.clientWidth

Var target = ev.srcElement||ev.target

6. ajax请求的时候get 和post方式的区别

1. GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。当然在Ajax请求中,这种区别对用户是不可见的

2、get传输数据容量小,不安全,post传输数据内容大,更加安全;

7. call和apply的区别

apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。

call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。

它们的共同之处:

都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。

它们的不同之处:

apply:最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。

call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。

实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。

8. ajax请求时,如何解析json数据

答案:JSON.parse()方法把字符串转为json对象.

JSON.stringify()方法把json对象转为字符串.

10. 闭包是什么,有什么特性,对页面有什么影响

就是函数a的内部函数b,被函数a外部的一个变量引用的时候,就创建了一个闭包

闭包的特性:

①.封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口;

②.持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在

系统中,闭包中的数据依然存在,从而实现对数据的持久使用。

优点:

① 减少全局变量。

② 减少传递函数的参数量

③ 封装;

缺点:

使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等.

function a(){

var i=0;

function b(){

alert(++i);

}

return b;

}

var c = a();

c();

11. 如何阻止事件冒泡

答案:ie:阻止冒泡ev.cancelBubble = true;非IE ev.stopPropagation();

12. 如何阻止默认事件

答案:(1)return false;(2) ev.preventDefault();

13. 添加 删除 替换 插入到某个接点的方法

1)创建新节点

createElement() //创建一个具体的元素

createTextNode() //创建一个文本节点

2)添加、移除、替换、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替换

insertBefore() //插入

3)查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值

getElementById() //通过元素Id,唯一性

22. 看下列代码,输出什么?解释原因。

var a = null;

alert(typeof a);

答案:object

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

23. 判断字符串以字母开头,后面可以是数字,下划线,字母,长度为6-30

var reg=/^[a-zA-Z]w{5,29}$/;

31. 希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)

var inputs = document.getElementsByTagName("input");//获取所有的input标签对象

var checkboxArray = [];//初始化空数组,用来存放checkbox对象。

for(var i=0;i

32. 写一个function,清除字符串前后的空格。(兼容所有浏览器)

String.prototype.trim= function(){

return this.replace(/^s+/,"").replace(/s+$/,"");

}

42. js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式什么?

alert

confirm

prompt

45. 可视区的大小:

(1)innerXXX(不兼容ie)

window.innerHeight 可视区高度,包含滚动条宽度

window.innerWidth 可视区宽度,包含滚动条宽度

(2)document.documentElement.clientXXX(兼容ie)

document.documentElement.clientWidth可视区宽度,不包含滚动条宽度

document.documentElement.clientHeight可视区高度,不包含滚动条宽度

46. 节点的种类有几种,分别是什么?

(1)元素节点:nodeType ===1;

(2)文本节点:nodeType ===3;

(3)属性节点:nodeType ===2;

47. innerHTML和outerHTML的区别

innerHTML(元素内包含的内容)

outerHTML(自己以及元素内的内容)

48. offsetWidth offsetHeight和clientWidth clientHeight的区别

(1)offsetWidth (content宽度+padding宽度+border宽度)

(2)offsetHeight(content高度+padding高度+border高度)

(3)clientWidth(content宽度+padding宽度)

(4)clientHeight(content高度+padding高度)

50. 冒泡排序算法

var array = [5, 4, 3, 2, 1];

var temp = 0;

for (var i = 0; i array[j + 1]){

temp = array[j + 1];

array[j + 1] = array[j];

array[j] = temp;

}

}

}

原文https://www.toutiao.com/a6626187995441529358/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1542787574&app=news_article&utm_source=weixin&iid=50616827333&utm_medium=toutiao_ios&group_id=6626187995441529358

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值