面试1

跨域

jsonp

jsonp的原理就是动态滴创建script标签,将script标签的src的url中传入要发给其他域服务器的数据,和接收服务器返回数据的函数名字

iframe 缺点不利于seo

基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域

ES6中fetch

fetch语法糖

fetch('/test/content.json', { // url: fetch事实标准中可以通过Request相关api进行设置
    method: 'POST',
    mode: 'same-origin', // same-origin|no-cors(默认)|cors
    credentials: 'include', // omit(默认,不带cookie)|same-origin(同源带cookie)|include(总是带cookie)
    headers: { // headers: fetch事实标准中可以通过Header相关api进行设置
        'Content-Type': 'application/x-www-form-urlencoded' // default: 'application/json'
    },
    body: 'a=1&b=2' // body: fetch事实标准中可以通过Body相关api进行设置
}).then(function(res){ res: fetch事实标准中可以通过Response相关api进行设置
    return res.json();
}).then(function(data){
    console.log(data);
}).catch(function(error){
    
});

字符串截取

  • substring()
  • 功能:字符串截取,比如想从"MinidxSearchEngine”中得到"Minidx”就要用到substring(0,6)
  • 语法
  • stringObject.substring(start,stop)
  • substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
  • 如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
  • 如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
  • 如果 start 或 end 为负数,那么它将被替换为 0。
  • substr 方法
  • stringObject.substr(start [, length ])
  • 参数 描述
  • start 必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。
  • length 可选。在返回的子字符串中应包括的字符个数。

angular双向绑定

  • angular并不存在定时脏检测。
  • angular对常用的dom事件,xhr事件等做了封装, 在里面触发进入angular的digest流程。
  • 在digest流程里面, 会从rootscope开始遍历, 检查所有的watcher。
  • 谈起angular的脏检查机制(dirty-checking), 常见的误解就是认为: ng是定时轮询去检查model是否变更。
  • 其实,ng只有在指定事件触发后,才进入$digest cycle:DOM事件,
  • 譬如用户输入文本,点击按钮等。(ng-click)
  • XHR响应事件 ($http)
  • 浏览器Location变更事件($location)
  • Timer事件($timeout, $interval)
  • 执行$digest()或$apply()

angular与vue的区别

  • angular用的是脏检查,为每一个数据设置watch,数据改动就更新。
  • vue用的是双重绑定

- CMD VS AMD

  • CMD与AMD都是为了javascript 组件化开发 AMD是requireJS CMD是Seajs
  • AMD是提前执行 不过requireJS从2.0开始也成为了延迟执行 CMD是延迟执行

display的全部属性

  • inline inline-block block none flex table-sell table

img为行内替换元素 所以可以设置宽高

input框disabled之后如何获取value值

  • 在做网站管理后台的用户修改功能时,由于当前用户修改个人信息时规定用户名不能修改,故使用了input标签的disabled属性,但是在提交数据后却发现用户名显示为空了。后来一查才知道input设置为disabled值时会有下面的限制:
  • 1、不能接收焦点;
  • 2、使用tab键时将被跳过;
  • 3、可能不是successful的。
  • 解决方法是:可以使用readonly=”readonly”属性代替即可,而input设置为readonly属性也有一些限制:
  • 1、可以接收焦点,但不能被修改;
  • 2、可以使用tab键进行导航;
  • 3、可能是successful的。

找Bug 用过firebug或者开发人员工具F12

如何解决移动端页面抖动

-webkit-backface-visibility: hidden  页面抖动

Less 特点

  • 变量
  • 混合
  • 嵌套规则
  • 运算
  • 函数
  • 作用域
  • 命名空间
  • 注释
  • 导入 import

Less原理

  • CSS预解析
  • 为css样式生成工具

gulp作用

  • Sass、Less编译
  • CSS JS 图片压缩
  • CSS JS合并
  • CSS JS 内联
  • 自动刷新
  • 雪碧图
  • ESLint

你可能感兴趣的:(面试1)