当前位置: 首页 > news >正文

媒体查询做响应式网站有哪些线上产品推广方案

媒体查询做响应式网站有哪些,线上产品推广方案,南宁网站建设gxskm,广州哪家做网站好前言 说到箭头函数,可能很多人的第一反应就是和普通函数的区别: 箭头函数没有 this,普通函数的 this 指向依赖它是如何被调用的箭头函数没有 arguments 对象,而是通过剩余参数(rest parameters)来获取所有…

前言

说到箭头函数,可能很多人的第一反应就是和普通函数的区别:

  1. 箭头函数没有 this,普通函数的 this 指向依赖它是如何被调用的
  2. 箭头函数没有 arguments 对象,而是通过剩余参数(rest parameters)来获取所有参数的值
  3. 箭头函数没有 prototype 原型,不能用作构造函数,而普通函数可以
  4. 更加简洁的函数语法

相信一名前端开发者,对于这两者的区别,多多少少都能罗列一些,但是你们有没有想过,JS已经有普通函数了,为什么还要有箭头函数?难道仅仅只是语法简洁可读性好这么简单?

答案只有一个:消除函数的二义性

函数的二义性

那什么是函数的二义性呢?

我们创建一个普通函数:

function user(){}

这个时候就会出现歧义,因为这个函数有两种调用方式:

function user(){};//  普通方式调用
user();// 当做构造函数调用
new user();

这就是函数的二义性,至于为什么会出现这种情况,这个就要追溯到 JS 的历史渊源了,我感觉应该是 JS 这门语言在设计上的缺陷。

因为函数的二义性,导致 JS 函数的复杂度直线上升,因为函数在创建的时候,创建者不知道未来的调用者如何调用,可能直接调用,也有可能通过 new 方法调用,这就会存在很大的安全隐患。

后来开发者就在函数的命名上定义了一套规范,普通函数首字母小写,构造函数首字母大写,就像下面这样:

//  普通函数
function user(){};// 构造函数
function User(){};

但毕竟这个不是强约制性的,普通函数依旧可以使用 new 调用,这只能说在一定程度上稍微缓解了这个问题,就像 JS 一些构造函数一样,两种调用方式都可以,比如:

//  Number
Number();
new Number()// Date
Date();
new Date();

如果你想普通函数不能通过 new 来调用,你可以这么做:

function User(){if(new.target){throw('Uncaught TypeError: User is not a constructor')}
}

所以调用者压根就不清楚函数的调用方式,这个函数的二义性,会给开发者造成心智负担。
官方一直都知道这个问题,只是一直没解决,后来ECMAScript 6在给 JS 打补丁的时候,引入了两个概念:

  1. 箭头函数
  2. class实例

它们的作用都是为了消除函数的二义性

箭头函数只能这样调用:

const user = () => {};// 报错 Uncaught TypeError: user is not a constructor
const a = new user();// 正确
user();

class 只能这样调用:

class User{};// 报错 Uncaught TypeError: Class constructor User cannot be invoked without 'new'
const user = User();// 正确
const user = new User();

箭头函数

那为什么箭头函数里边没有this和原型?

const user = () => {};
console.log(user.prototype); // undefined

因为箭头函数跟实例无关,跟面向对象没关系,它已经脱离了面向对象的范畴,而 this 哪来的?this 来自于面向对象里面的概念,箭头函数里面没有原型的概念是一样的。

http://www.15wanjia.com/news/156112.html

相关文章:

  • 自助建设wap网站网页怎么制作四页
  • 医疗网站前置备案福州医院网站建设公司
  • 网站免费软件推荐wordpress动态二维码
  • 网站如何做搜索做免费导航网站
  • 做网站的宽度为多少钱中国建设银行官方网站e路航下载
  • 湖北做网站多少钱基金网站模板
  • 保险网站有哪些黄岛网站建设哪家专业
  • 淘宝开网站建设店铺分析郑州中医男科哪个医院好
  • dedecms学校网站如何制作一个小程序
  • aspnet网站开发到部署流程自己做个网站的流程
  • 贵州安顺网站建设湖南旅游十大必去景区
  • 西湖区住房和城乡建设局网站自建网站 支付宝
  • 小地方网站建设公司好2017wordpress整站源码
  • 切片工具做网站怎么做工信部网站备案被注销
  • p2p网上贷款网站建设方案.docx邯郸住房和城乡建设部网站
  • 网站栏目架构最牛html5网站建设
  • c 网站建设步骤自己做盗版小说网站
  • 高端人才做兼职的招聘网站有哪些织梦网站一级目录
  • 医学专业网站苏州网站建设外包
  • 网站百度一直没有收录给客户做网站需要付法律责任吗
  • 网站管理后台打不开网站忘记密码功能
  • .net网站设计电商加盟
  • 石家庄市栾城区建设局网站北京高端网站建设飞沐
  • 织梦网站动态sogou网站提交
  • 做组织架构图的网站作为一个大学生网站 应该怎么做
  • 常用网站后缀设计比较好的网站
  • seo整站优化一年价格多少做网站几天能学会
  • 一个专做里番的网站专业深圳网站建设
  • 公司网站建设 宁波wordpress定制分类
  • 网站标题的选择河南省交通基本建设质量检测监督站网站