发个复盘攒rp,希望九月好运
只记得部分觉得重要的题了
1.this指向 这里会混淆foo里面的this和temp里面的this,还有参数数组项的this
var age=10; var obj={ foo:function (fuc) { fuc(); //console.log(this,'foo this');//{age: 18, foo: ƒ} "foo this" arguments[0]() }, age:18 }; function temp(){ console.log(this.age,'temp this') } obj.foo(temp); //第一次this是window(浏览器环境下) //第二次this是Arguments //10 undefined //做了个测试 [function temp(){ console.log(this[1],'my test')//1 "my test" },1][0]();
PS:可能记错题目了,感谢评论区小伙伴的提醒,那这道题考的不是this而是作用域链了
作者:云初啊 链接:https://www.nowcoder.com/discuss/495750?toCommentId=7121852 来源:牛客网 var age = 10; var obj = { foo: function(func) { func(); arguments[0](); }, age:18, } function temp() { console.log(age); } obj.foo(temp); //10 10
408 (请求超时) 服务器等候请求时发生超时
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
3.Ajax请求时是否带Cookie的设置
通过设置 withCredentials: true ,发送Ajax时,Request header中便会带上 Cookie 信息。
考试的时候拼错了。。。
4.问答题CMD AMD优缺点 一直觉得这个知识点边缘没去看 只能猜测着写一下
CommonJS中,require需要代码是同步执行的,但是在浏览器端实现的时候,加载使用srcipt标签,但脚本标签天生异步,导致传统CommonJS无法正常加载。
AMD异步模块定义 | CMD通用模块定义 |
---|---|
在浏览器端模块化开发的规范 RequireJS主要解决了:1⃣️有依赖关系需要顺序加载的js文件;2⃣️js加载阻塞 | 在浏览器端模块化开发的规范 浏览器的实现SeaJS |
AMD依赖前置,js可以方便知道依赖模块是谁,立即加载 | 而CMD就近依赖,需要使用把模块变为字符串解析一遍才知道依赖了那些模块,以性能换便利 |
AMD在加载模块完成后就会执行模块,所有模块都加载执行完后会进入require的回调函数,执行主逻辑,依赖模块的执行顺序和书写顺序不一定一致 | CMD加载完某个依赖模块后并不执行,只是下载而已,在所有依赖模块加载完成后进入主逻辑,遇到require语句的时候才执行对应的模块,这样模块的执行顺序和书写顺序是完全一致的 |
需要用到对应的库函数RequireJS 定义函数 语法:define(id?, dependencies?, factory); id:可选参数,用来定义模块的标识,默认脚本文件名; dependencies:当前模块依赖的模块名称数组; factory:工厂方法,模块初始化要执行的函数或对象。 | 语法:define(id?, deps?, factory) 其中常用文件名作id;推崇依赖就近,依赖一般不写deps中,写在factory中;factory:是个函数,function(require, exports, module) require:是个方法,require(id),用来获取其他模块提供的接口; exports:是个对象,用来向外提供模块接口; module:是个对象,存储了与当前模块相关联的一些属性和方法。 |
在页面上使用require函数异步加载模块, 语法:require([dependencies], function(){}); [dependencies]:数组,表示所依赖的模块; function(){}:回调函数,前面依赖的模块加载完成后,加载的模块以参数形式传入函数,被调用。 |
全部评论
(6) 回帖