每天几个前端小知识

简介: 每天几个前端小知识

jQuery篇



1.Css预处理sassless是什么?为什么使用他们


Sass和less都是css预处理器,是css上的一种抽象层,是一种特殊的语法,最终会编译成css,less是一种动态样式语言,给css赋予了动态语言的特性,比如:变量,继承,嵌套。Less既可以在客户端运行,在可以在服务端运行(需要借助node)


2.Js中.call()与.apply()区别


apply:调用一个对象的一个方法,用另一个对象替换当前对象。

call:调用一个对象的一个方法,用另一个对象替换当前对象。

从定义中可以看出,call和apply都是调用一个对象的一个方法,用另一个对象替换当前对象。而不同之处在于传递的参数,apply最多只能有两个参数——新this对象和一个数组argArray,如果arg不是数组则会报错


相同点:两个方法产生的作用是完全一样的。call,apply作用就是借用别人的方法来调用,就像调用自己的一样.

不同点:方法传递的参数不同


3.为什么会造成跨域/请简述同源策略


出现跨域问题的原因:

在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想回去数据一般都是post/get请求,所以..跨域问题出现


跨域问题来源于JavaScript的同源策略,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。


同源策略是由NetScape提出的一个著名的安全策略。所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源。


4.请输出三种减少页面加载时间的方式


1.优化图片

2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高

的地方)

3.优化CSS(压缩合并css,如margin-top,margin-left...)

4.网址后加斜杠(如www.campr.com/目录,会判断这个目录是什么文件类型,或者是目录。)cdn托管

5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。


当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了)


6.减少http请求(合并文件,合并图片)


5.This指向


在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是,

指向该函数所属的对象。

全局的this→指向的是Window

对象中的this→指向其本身

事件中this→指向事件对象


6.什么是jsonp工作原理是什么?他为什么不是真正的ajax


Jsonp其实就是一个跨域解决方案。

Js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的。所以可以把要请求的数据封装成一个js语句,做一个方法的调用。跨域请求js脚本可以得到此脚本。得到js脚本之后会立即执行。

可以把数据做为参数传递到方法中。就可以获得数据。从而解决跨域问

题。

jsonp原理:(动态创建script标签,回调函数)

浏览器在js请求中,是允许通过script标签的src跨域请求,可以在请求的结果中添加回调方法名,在请求页面中定义方法,就可获取到跨域请求的数据。


为什么不是真正的ajax?

1、ajax和jsonp这两种技术在调用方式上"看起来"很像,目的也一样,都是请求一个url,然后把服务器返回的数据进行处理,因此jquery和ext等框架都把jsonp作为ajax的一种形式进行了封装;


2、但ajax和jsonp其实本质上是不同的东西。ajax的核心是通过XmlHttpRequest获取本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。

3、所以说,其实ajax与jsonp的区别不在于是否跨域,ajax通过服务端代理一样可以实现跨域,jsonp本身也不排斥同域的数据的获取。

4、还有就是,jsonp是一种方式或者说非强制协议,如同ajax一样,它也不一定非要json格式来传递数据,如果你愿意,字符换也行,只不过这样不利于jsonp提供公开服务。


7.请掌握2种以上数组去重的方式


使用indexof()方法

使用lastindexof()方法和indexof方法一样indexof从头部开始匹配lastindexof从尾部匹配

ES6的set结构set不接受重复数据使用sort方法先将原数组排序,然后与相邻的比较,如果不同则存入新数组


使用filiter和indexof方法

使用ES6的set和扩展运算符

使用set和Array.from()方法array.from可以将set结构转

成数组

用splice和双层循环

使用includes方法


8.深浅拷贝是什么如何实现?


深拷贝:指针赋值,并且内容拷贝、浅拷贝:只是简单的指针赋值数组

浅拷贝:如果是数组,可以使用数组的一些方法实现:slice(),concat()

返回一个新数组的特性实现拷贝。用扩展运算符spread实现数组深拷贝:JSON.parse(JSON.stringify())不仅适用于数组还适用于对象。不能拷贝函数,undefined,symbol。


9.为什么js是弱类型语言


弱类型语言实现相对于强类型语言来说的,在强类型语言中,变量类型有多种,比如intcharfloatBoolean不同类型相互转换有时需要强制转换,而jacascript只有一种类型var,为变量赋值时会自动判断类型并转换,所以是弱类型语言。


10.怎么转换less为css


1.用node将less文件生成为css文件

2.用webstorm自动生成

目录
相关文章
|
8月前
|
移动开发 前端开发 JavaScript
大前端时代
大前端时代
133 1
|
8月前
|
前端开发
前端必看的8个HTML+CSS技巧 (2)
前端必看的8个HTML+CSS技巧 (2)
|
5月前
|
前端开发 JavaScript 数据可视化
前端实用网站
前端实用网站
|
8月前
|
前端开发 程序员 数据处理
关于前端的一些
关于前端的一些
48 1
|
8月前
|
前端开发 JavaScript
前端必看的8个HTML+CSS技巧 (1)
前端必看的8个HTML+CSS技巧 (1)
|
缓存 小程序 前端开发
每天几个前端小知识
每天几个前端小知识
67 0
|
前端开发
前端,理解this
前端,理解this
71 0
|
Web App开发 前端开发 JavaScript
纯前端实现视频混流
随着前端音视频技术的不断成熟越来越多的直播平台开始提供网页开播的直播方式,不需要再使用 OBS 或者各家的直播伴侣。
575 0
|
前端开发 JavaScript UED
关于前端的一些思考
前端开发作为Web前端的重要组成部分,越来越受到关注。为了在竞争激烈的市场中脱颖而出,我们需要不断创新并进行原创性的开发。
107 0
|
前端开发
什么是前端
什么是前端自制脑图
99 0
什么是前端

热门文章

最新文章