JS踩坑整理(二)

js问题整理(二)

IOS端滑动不流畅的问题

在安卓端滑动非常流畅,但是在IOS端,滑动非常卡顿,

OK,很简单,使用overflow-x:auto;谷歌模拟器一切正常,安卓正常,可是打完包在IOS上,滑动效果慢到完全跟随手指的移动而移动,这样是肯定不行的经过百度发现了解决之道;

-webkit-overflow-scrolling: touch;

在body标签中添加ontouchstart

兼容性问题

1.在IE8之下,input里的placeholder里面的值会被直接传递到后台

2.window环境下不会区分路径的大小写,不会有影响,但是在linux环境下会报504的错误

MUI的mui.openWindow使用问题

在这个方法中默认使用nativeui,当你不希望使用这个模块的时候你需要从ma’nifest.json中移除nativeui模块

同时

mui.openWindow({   //运行这个方法需要在mainifest.json中添加一个控件
                                    /*步骤   打开manifest.json-》模块权限配置 添加NativeUI 原生*/
                    url:'detailPage.html',
                    id:'info',
                    extras:{
                        aparticle_id:$(".jx_infoImg").attr("aparticle_id"),   //文章id
                        aparticle_time:$.attr("aparticle_time"),   //时间
                        aparticle_comment:$(".jx_infoImg").attr("aparticle_comment"),
                        aparticle_commend:$.attr("aparticle_commend"),     //点赞数
                        aparticle_laud:$(".jx_infoImg").attr("laud")
                    },
                    waiting:{
                        autoShow:false,   //必须
                    }
                })

谈谈PC端性能优化的问题

  1. 代码层面:避免使用css表达式,避免使用高级选择器
减少全局变量,减少dom操作次数 避免全局查询,多个变量一起声明,避免使用空的src,空的src会重新加载页面,影响速度和效率,避免在html结构中写style标签
  1. 利用缓存,使用外部js和css文件以便缓存,添加Expires头,减少DNS查找
  2. 减少HTTP请求,css合并,图片精灵等技术
  3. 压缩文件,开启gzip

移动端性能优化

  1. 适当的使用touch代替click事件

  2. 避免使用css3阴影

  3. 少使用float,float在渲染时计算量比较大

  4. 尽量使用css3动画

  5. PC端的优化在移动端仍然适用

堆和栈的区别

堆先进先出,栈先进后出

http2.0

  1. 采用服务器推的概念,允许服务器主动向客户端缓存推送数据,提高性能
  2. 提供更多的加密支持
  3. 采用头压缩,请求和响应的header信息只会占很少的带宽

谈谈你对语义化的理解

  1. 当页面样式丢失时页面结构清晰
  2. 有利于seo优化,有助于爬虫爬取信息
  3. 提高代码的可读性

Doctype的作用

放在html结构的最前面,高速浏览器以何种方式来解析文档

new的时候都干了啥

  1. 创建一个空的对象
  2. 注入属性和方法

JS的同源策略

同源策略是一种安全协议,协议域名端口想同

为什么要有同源策略

如果没有限制,黑客就能把银行的登陆页嵌套进一个iframe这样的话当你登陆的时候你,对方就能轻松的 获取到你的账号和密码,危险

vue的双向数据绑定

vue中主要采取数据劫持 的方式实现双向数据绑定 通过object。defineProtype来劫持属性的setter和getter

比较vue和react

都使用了虚拟dom,提高了性能

都是组件化的开发模式

vue适合小型的web应用的开发

1 和 Number(1)的区别

var a = 1 是一个常量, 而Number(1) 是一个函数,

当1 === Number(1) 做判断的时候也是拿Number的执行结果进行对比,

cookie是如何在服务器端和客户端进行传递的

在http2.0中添加了服务器推的概念 ,允许服务器主动向客户端缓存推送数据,提高性能

客户端可通过document.cookie = 获取到cookie

在js中进行判断,有的话,通过get或者post推向服务器端

找到:“I love China”中最长的单词,输出各单词的长度

function word(){
    var str = "I love china"
    arr =  str.split(" ")   //把一个字符串分割成字符串数组。
    arr.sort(function(a,b){
        return a.length - b.length
    })

}
word()

concat() 方法用于连接两个或多个数组。

XML和json的区别

  1. 数据体积 json的体积更小,传递更快
  2. 数据交互方面 json与js交互更加方便,更容易被解析处理
  3. 数据描述,json对数据的描述比xml差
  4. 传输速度,json的传输速度远远快于xml

meta标签的作用

用来指定关于html文档的信息

htm和html

二者是相同的,

很久以前doc的平台有个8.3约束,后缀只能是3个字符,现在已经不存在这个问题了

在linux系统之中打开htm打开的是源码

变量常驻内存会带来什么问题

内存泄漏,在程序结束结束的时候,变量才会被释放

内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。 长期堆积的内存泄漏也将导致内存溢出。内存溢出指没有足够的内存去让程序运行

jsonp

用来处理跨域的一种解决方式

优点:兼容性好,在古老的浏览器中也能运行

缺点:不能够处理POST请求,支支持GET

标准盒模型和怪异盒模型

标准盒模型:一块的总宽高 = width + margin + padding+ border

怪异盒模型:总宽高 = width + maigin(左右))width已经包含padding和border

重排和重绘

重排:修改了元素的宽高,或者其他属性,浏览器需要重新计算元素的几何属性,浏览器会使所渲染书中受影响的部分失效,并且重新渲染树,

重绘:重排完成之后,浏览器会重新绘制受影响部分到屏幕中

变量提升

变量提升的这个概念,只适合变量的声明,并不适用于变量的赋值

正则表达式不能比较,每一个正则表达式都是唯一的

position的默认值是static

你可能感兴趣的:(网络学习日志,JavaScript,前端面试题整理,js)