第3章非函数式语言特性

  这一章首先介绍了语言的分类,命令式(结构化编程,面向对象编程),说明式(函数式等)。而这一章,主要介绍JS的非函数式特点。

  在开始之前,首先介绍了由“结构化编程”向“面向对象编程”的演化趋势。“结构化编程”根本上是面向机器世界的“存储描述”因此抽象层次比较低,所以带了以下几点问题:

  1. 结构体与实体直接相关,并且将这种相关性直接呈现在使用者的面前,因此开发人员必须面临数据的具体含义与关系。

  2. 结构体的抽象更面向于数据存储形式的表达和算法实现方式,脱离了使用环境,算法的结构也缺乏通用性。

  3. 僵化的类型与讲话的逻辑并存,影响了业务逻辑的表达。

  以上三点,在面向对象编程之中得到了良好的解决。

  1. 面向对象提出通过更加细化的可见设定(public,protected,private等),更好地实现了数据的封装以及数据域的管理。

  2. 面向对象中的“继承”解决了结构体的通用性问题。可以在不同的场合从共有的特点中继承产生新的类别,从而更好地适应该场合。

  3. “多态”被用来解决了“强类型”与业务逻辑表达之间的冲突。

  此外,接口的提出(质保陆数据提的逻辑行为能力,而不暴露这种能力的实现方法和给予的数据特性),是一种更高层次的抽象。

  之后就是重点讲js的“结构化编程”和“面向对象编程”的具体内容。

  首先说结构化的内容:

  1. break/break<label>的区别:break 表示跳出当前循环,break<label>表示跳出当前label之间的语句。

  变量的作用域:

  1. JS中,表达式级别的变量都是匿名的。

  2. 由于JS中不存在语句级别的变量作用域,因此for ( var i in obj)中的i会逸出到上一级,很有可能造成污染!

  3. JS中变脸的作用域只有两个局部变量(函数内部),全局变量。

  4. 两个不利于开发的事情:

  1) 在全局范围内任意声明变量,尤其是在for语句中声明变量

  2) 在函数内部不适用var声明变量,而是直接为变量赋值将会导致变量逸出到全局

  5. JS中,语法解释与执行分为两个阶段,变脸的显示声明(var)是在语法解释阶段处理的(在解释阶段该值为undefine)。

  6. 变量的被创建的两个方式:

  1) 在语法分析时,发现了显示声明的变量var

  2) 在代码执行时,发现试图为一个未被创建的变量赋值

  7. 变量的两种释放方式:

  1) 某个函数退出时,清除函数内的未被引用的变量

  2) 全局代码块终结时,将清除全局的变量和数据的引用

  8. 一个具名函数完全等价于将一个匿名函数赋值给一个已经声明变量的表示符的。

  

var sb = function() {alert("haha");
}function sb2() {alert("haha");
}

这两个函数除了在语法上面有些不同之外,调用方式等都是一样的。

面向对象,内容比较多,下一篇再细说吧!

转载于:https://www.cnblogs.com/qoshi/p/3457676.html

《JavaScript语言精髓与编程实践》读书笔记二相关推荐

  1. 《Docker 技术入门与实践》-读书笔记二

    <Docker 技术入门与实践>-读书笔记一 <Docker 技术入门与实践>-读书笔记二 一.数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据 ...

  2. python基础学习[python编程从入门到实践读书笔记(连载一)]

    写在前面:本文来自笔者关于<python编程从入门到实践>的读书笔记与动手实践记录. 程序员之禅 文章目录 02变量和简单数据类型 03 列表简介 04 操作列表 05 if语句 06 字 ...

  3. 测试工程师全栈技术进阶与实践读书笔记

    第一章 软件测试基础知识精要(上) 1.1 从"用户登录"测试谈起 1.1.1 功能测试用例 1.1.2 更多的测试用例 1.1.3 功能性需求与非功能性需求 对显式功能性需求的验 ...

  4. python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目

    文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...

  5. python基础学习[python编程从入门到实践读书笔记(连载五)]:数据可视化项目第16章

    文章目录 下载数据 制作全球地震散点图:JSON格式 end 几个实验结果: 每日最高气温: 地震图绘制: 下载数据 CSV文件格式 在文本文件中存储数据,一个简单方式是将数据作为一系列以逗号分隔的值 ...

  6. 【Docker技术入门与实践(第2版)】Docker入门_学习笔记

    第一章 1 Docker入门须知 1.1 Docker基本知识 Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最初发 起者是dotCloud公司.Docker自开源后受到广泛的关 ...

  7. python编程从入门到实践读书笔记-《Python编程:从入门到实践》项目部分读书笔记(二)...

    鸽了一个暑假没有更新,现在趁着还没开学更一下.咕咕咕 上期作业: 请创建一个Django项目,命名为Blog,建不建立虚拟环境随便你,最后本地跑成了就行. 步骤: ①在需要创建工程的文件夹下打开cmd ...

  8. python基础学习[python编程从入门到实践读书笔记(连载二)]:外星人入侵项目

    第一版游戏demo 添加计分系统:中间是最高得分,右边是本次得分. 显示余下的飞船数 主函数如下,完整程序将上传到笔者的github:https://github.com/shizhengLi/lea ...

  9. 深入浅出Istio:Service mesh快速入门与实践-读书笔记(By GisonWin)

    01 服务网格历史 (以后补充) 02 服务网格的基本特性 连接 微服务错综复杂,要完成其业务目标,连接问题是首要问题.连接存在于所有服务的整个lifcecycle中,用于维持服务的运行. 安全 保障 ...

  10. 深度学习框架Pytorch入门与实践——读书笔记

    2 快速入门 2.1 安装和配置 pip install torch pip install torchvision#IPython魔术命令 import torch as t a=t.Tensor( ...

最新文章

  1. spellchecker.php 漏洞,整理一些大汉版通的漏洞
  2. matlab循环矩阵
  3. python turtle画彩虹-python绘制樱花,彩虹旋等
  4. 此安装程序必须使用 java 开发工具包 (jdk) 执行_彻底搞懂Java开发工具包(JDK)安装及环境变量配置...
  5. git commit Please tell me who you are it config --global user.email you@example.com
  6. 第六讲:Obj-C 内存管理4 - 自动释放池
  7. enter opportunity line item detail page AG3
  8. 引出发射和什么是反射和Class类和Class实例、基本类型的字节码对象
  9. 蔚来2018年平均每天亏掉2641万,车辆交付预期环比腰斩
  10. 微信翻译团队课余也搞围棋AI:比腾讯绝艺更强,首次亮相就夺冠
  11. 麻雀算法改进的深度极限学习机DELM的分类 - 附代码
  12. 怎么判断浮点数的有效位数_JavaScript的数据类型及判断
  13. PHP自动加载(下)——PSR4
  14. 【北京迅为】i.MX6ULL终结者RS232驱动测试RS485测试
  15. linux刷新本地dns命令_Linux在shell终端中清空DNS缓存,刷新DNS的方法
  16. 服务器PCI插槽上的固态硬盘,固态硬盘常见接口图解
  17. vscode必备常用插件
  18. 物联网云平台—物联网背后的掌舵者?
  19. 用于PCB设计和印刷的修补匠工具
  20. 启发式函数在A* 中的作用

热门文章

  1. [动漫日语每天一句]02 怎么啦?你在紧张?
  2. How to apply for the PG studies as a UG
  3. campus bike at stanford
  4. easiest approach for improving writing skills for ielts
  5. 多线程的多核分配问题验证
  6. Memcpy, blockcopy的进一步理解
  7. 更改ubuntu的默认shell
  8. CNCF宣布Envoy项目正式毕业
  9. 【NetApp】IO读写和WAFL的工作原理
  10. 90. Subsets II 1