前端面试问题记录

来源:互联网 发布:js执行按钮点击事件 编辑:程序博客网 时间:2024/04/30 11:07

1.说明一下闭包:JS函数对象的内部状态不仅包含函数的代码逻辑,还必须引用当前的作用域链。函数对象可以通过作用域链关联起来,函数体内部的变量都可以保存在函数作用域内。

所有的JS函数都是闭包:它们都是对象,它们都关联到作用域链


2.为什么要用闭包

1)保护函数内的变量安全。

2)在内存中维持一个变量。


3.JS与native数据如何传递

phonegap


4.如何解决ajax跨域问题

jQuery的ajax有jsonp这样的属性可以用来解决跨域的问题。

http://www.cnblogs.com/sunxucool/p/3433992.html


5.什么是jsonp格式。

jsonp比json外面有多了一层,callback()。

JSONP全称应该是“JSON with padding”吧,它正是利用了<script />可以跨域请求的特性。简单来说JSONP就是在客户端将要用来处理请求结果的函数名作为参数传递给服务器端,然服务器端将请求结果数据作为参数包装在这个函数中 并返回给客户端执行。


6.URL不变,单页面局部刷新的原理?

ajax异步请求


7.事件冒泡是怎么回事?

事件冒泡(event bubbling)的事件流:事件冒泡可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面。也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。

事件捕获(event capturing):与事件冒泡相反,事件会从最外层开始发生,直到最具体的元素。

上面的例子在事件捕获的概念下发生click事件的顺序应该是document -> html -> body -> div -> p


8.H5中的data是何作用?

HTML 5 增加了一项新功能是 自定义数据属性 ,也就是  data-* 自定义属性。在HTML5中我们可以使用以 data- 为前缀来设置我们需要的自定义属性,来进行一些数据的存放。当然高级浏览器下可通过脚本进行定义和数据存取。在项目实践中非常有用。

XML/HTML code
?
1
<div id = "user" data-uid = "12345" data-uname = "愚人码头" > </div>

使用attribute方法存取 data-* 自定义属性的值
使用attributes方法存取 data-* 自定义属性的值非常方便:
JavaScript code
?
1
2
3
4
5
6
7
// 使用getAttribute获取 data- 属性
var user = document . getElementById ( 'user' ) ;
var userName = plant . getAttribute ( 'data-uname' ) ; // userName = '愚人码头'
var userId = plant . getAttribute ( 'data-uid' ) ; // userId = '12345'
  
// 使用setAttribute设置 data- 属性
user . setAttribute ( 'data-site' 'http://www.css88.com' ) ;

9.说明下jQuery的代理

利用冒泡的原理,把事件加到父级上,触发执行效果。

0 0
原创粉丝点击