本文提供最简便的解答方式,方便快速记忆,复盘,详细答案可自己再搜一下。
////server.php并拿到返回值,然后再返回给 index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。
- 解释性脚本语言,代码不进行预编译
- 主要用来向HTML页面添加交互行为
- 可以直接嵌入HTML页面,但单独写成js文件有利于结构和行为的分离
- 跨平台性,在绝大多数浏览器支持下,可以在多种平台下运行,linux,windows
- 基本类型的值是不能改变的
- 基本类型不能添加属性和方法
- 基本类型的比较是值的比较
- 基本类型变量存放在栈区(栈内存)
- 也就是说基本类型在赋值操作后,两个变量是相互不受影响的。
- 引用类型可以添加属性和方法,属性方法内又可以添加基本类型
- 引用类型的值时同时保存在栈内存和堆内存里的对象,准确地说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,
- 引用类型的比较是引用的比较 引用类型时按引用访问的,换句话说就是比较两个对象的堆内存中的地址是否相同,那很明显,person1和person2在堆内存中地址是不同的
- 引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响
获取值的时候原生不是方法,不带括号
- 设置div html内容以及设置样式
- ECMAScript也是一种语言,也就是对规定的语法,操作,关键字,语句等的一个描述,javascript实现了ECMAScript
- DOM是文档对象模型,包括了获取元素,修改样式,操作元素三方面内容,也是我们进行最多的操作,有很多兼容性写法
- null是表示一个空的对象,转为数值为0,undefind表示一个空的原始值,转为数值为NAN
- undefind指本该有一个值,但却并有定义,null表示没有对象,不应该有值
- JSON相对于XML来讲传递速度更快,因为光看代码量就能看出
- JSON与js的交互更容易,解析更方便
22. 实现多个标签之间的通信
三者的共同点:都保存在浏览器。
- cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。
- 而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
- cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。
- sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;
- localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;
- cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
- sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;
- localStorage 在所有同源窗口中都是共享的;
- cookie也是在所有同源窗口中都是共享的。
23. 哪些操作会造成内存泄露
内存泄露指任何对象在不再拥有或不再需要它之后依然存在
- setTimeout第一个参数是字符串而不是函数的时候就会造成内存泄露
- 循环(两个对象彼此引用且彼此保留)
- 标记清除:这是js最常用的垃圾回收方法,当一个变量进入执行环境时,例如函数中声明一个变量,将其标记为进入环境,当变量离开环境时,(函数执行结束),标记为离开环境
- 引用计数: 跟踪记录每个值被引用的次数,声明一个变量,并将引用 类型赋值给这个变量,则这个值的引用次数+1,当变量的值变成了另一个,则这个值的引用次数-1,当值的引用次数为0的时候,就回收
- 子级函数调用父级函数的参数或变量
普通函数调用,指向windows
对象的方法调用,指向对象
构造器方法调用,指向构造函数实例出来的对象
28. new操作符到底干了什么
- 将构造函数的作用域赋值给新对象(所以this指向了这个新对象)
- 执行构造函数的代码(为这个新对象添加属性)
消除js一些不合理的用法
消除代码运行的一些不安全之处
为未来新版本js做铺垫
- 对象不能出现重复属性名
- arguments改变,不会影响函数参数
- eval,arguments变为关键字,不能作为变量名
30. 事件代理事件委托
- 原理是使用dom的冒泡,将事件绑定到父元素上,让父元素进行监听,提高性能
31.什么是版本控制,
版本控制是一种记录一个或若干文件内容变化,以便将来查阅修改以及更新。
- 判断就绪状态为4时执行代码
33.在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么
- 服务器处理请求并返回HTTP报文
首先根据url中的域名,在远程服务器中查询对应
ajax用于web页面中实现异步数据交互,实现页面局部内容刷新
- 优点:能够进行内容局部加载刷新,减少带宽,避免用户不断刷新以及页面跳转,提高用户体验
- 缺点:对搜索引擎不友好;浏览器不支持ajax的后退;
json是一种请求轻量级的数据交互格式
- 优点:轻量级,便于人的阅读理解,便于机器解析
常用的HTTP方法有哪些
- get主要是从服务器获取资源,post主要是像服务器发送数据
- get传输数据通过url请求,利用k=v的形式放在url后面,用?连接,多个用&连接而post是存放在,ajax中的data中的,get传输的过程使用户可见 的,而post是对用户不可见的。
- get传输的数据量小,因为受url的长度限制,但是效率高,post能上传的数据量大
- get方式传递的中文字符可能会乱码,post支持标准字符集,可以正确传递中文字符
http请求报文与响应报文格式
- 请求行:包含请求方法、URI、http版本信息
- 状态行:包含HTTP版本、状态码、状态码的原因短语
- 100-199:成功接收请求,但需要进行下一步请求
- 200-299:成功接收请求,并完成整个处理过程
- 300-399:为完成全部请求,客户需近一步细化需求
- 400-499:客户端请求有错误,包括语法错误或不能正常执行
- 500-599:服务器端出现错误
- 通信使用明文不加密,内容可能被窃听
- 不验证通信方身份,可能遭到伪装
- 无法验证报文完整性,可能被篡改
https就是加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
- 200 正常,表示一切正常,返会的是正常请求结果
- 302/307 临时重定向,表示请求的文档,已被临时移动到别处
- 304 未修改,调用缓存的数据
- 403 服务器拒绝客户请求
- 404 服务器不存在客户想要找的资源
- 500 服务器内部错误
36.数组去重的一种相对好理解的方法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
- let相当于给js新增了块级作用域,声明的变量只在let命令所在的代码块内有效
- const也是声明变量,它声明的变量,不能改变,可以用来声明第三方库变量的应用
- class定义一个类,其中有一个construct方法,construct方法中的this代表实例对象,construct以外还有其他的方法,construct内定义的方法属性是实例对象自己的,construct外的方法属性是所有实例对象共享的
- super指代父类的实例,子类construct中必须先调用super()方法,因为子类没有自己的this对象,是继承父类的this对象
除了书写简洁了很多,最大的优点是this指向,使用箭头函数,函数内部的this就是定义时所在的对象。箭头函数根本没有自己的this,this是继承外面的,它内部的this就是外层代码块的this
ajax调用数据库,需要向文档中插入大段html的时候,传统的字符串拼接太麻烦,引入模板工具库会稍微好点,不过还是没有es6的template string简单,可以直接用反单引号包括代码块``,用${}来引用变量,所有的空格缩进都会保留到输出中
es6按照一定模式,从数组和对象中提取值,对变量进行赋值,这就成为解构,也就是说,运用es5的方法,数组和对象中的变量需要,一个个进行赋值,而es6可以一步到位
当函数忘记传参的时候,给它一个默认值,传统方法是在函数中运用||,es6可以直接在参数中写上
gulp是一种自动化构建工具,前端工程化开发的一种工具,增强开发流程
通过default任务去定义工作流
最后在终端执行gulp来进行自动化操作
- gulp.task 创建任务 :参数任务名称,前置任务数组,回调函数
- gulp.src 寻找文件:通过路径找到一个或多个文件
- gulp.dest 输出到指定目录:如果没有就新建一个
- pipe具体不清楚,总之,除了gulp.src之外,其他执行条件都要放在.pipe()中
- Bootstrap给出了能想到的一切元素,也就是试图提供所有定义好的UI,比如一个导航,给予一个默认导航的样式
- Foundation只给定了限定的几种元素,可以自己自定义,更适合创造
- Foundation 的网格可以自动适配当前浏览器的宽度,Foundation 则会灵活适配当前的浏览器宽度, 这是一种新的技术手段, 自动适配的同时, 可以表现的与 Transformer 一样的效果.
- Boostrap 则是预定义了几种网格尺寸来适配主流的设备和屏幕.Bootstrap 会在你改变浏览器宽度的时候突然改变它的网格.
- Bootstrap有一个完备的社区,有什么问题几乎都可以迅速解决