JS拾遗

来源:互联网 发布:psd软件怎么用 编辑:程序博客网 时间:2024/05/16 07:18

JS中有些核心概念还是有不少琢磨头儿的。

1.你知道Context和Scope的区别吗?

很多人误以为Context和Scope是一回事,其实不然。Scope是关于变量可见性的一个概念,而Context则是一个对象,这个对象内函数在运行。通俗来讲,就是Scope是基于函数的,而Context是基于对象的。

http://blog.kevinchisholm.com/javascript/difference-between-scope-and-context/


2.Function Declaration && Function Expression

FD与FE的区别是:FD必须是Program Level或是Direct Occurs inside a function body。比如以下这句:

eg:(function test(){}) 

它就不满足FD的两个条件,所以他是一个FE。等价于:var test = function(){};

另外一点需要注意的是,FD的优先级是高于变量声明优先级的。比如:var myName;  function myName(){}

则typeof myName == 'function'


3.Closure

每个函数都会形成一个闭包。这种概念之前倒是木有听过。


4.闭包有哪些作用?a

都知道JS中有闭包这玩意儿,但为什么要存在这个玩意儿,考虑的人倒是不多。

4.1 函数模板  4.2 函数curry, bind ,partial, compose都要依赖于此。 3.Module Pattern Develop,因为牵涉到私有变量的保护等。 4.EVENT事件类型基于闭包。


5.什么是Object?

Object是无序名值对。这就是JS中对象的定义。创建对象的几种方式:var x = {}; Object.create; new


6.arguments是ARRAY吗?

在JS中,arguments看起来十分像Array,但实际上它不是Array,要用Array.prototype.slice.call(arguments);转化一下他就是ARRAY了。


7."abc" instanceof String false

为毛?因为当用literal 方式var x  = "abc"创建对象时,浏览器底层有个auto-boxing的behavior,将其转为对象,但这个玩意儿和var x = new String("abc")是不一样的。在V8中,"abc"是String,而new String("abc")则是StringObject().


8.var声明多个变量,不能出现类似于语句式的EXPRESSION。类似:

var a = {},
a.opacity = 3;

就是var只是声明或初始化变量。作用仅此而已。


9.iframe是INLINE元素,你皂吗?


10.XSS是什么?

推荐一本书《web前端黑客技术揭秘》,里面有关于XSS,CROF攻击的细节描述。XSS简单可以描述为“想尽一切板房将你的脚本内容在目标网站目标用户的浏览器上解析运行”即可。


11.常见的跨域技术?

这也是携程H5面试问题之一。服务端CORS;浏览器端IMG, JSONP,COMET,WEBSOCKET等。


0 0
原创粉丝点击