JavaScript高级程序设计读书笔记(一)
前言
在一个月前,我已经了解到了关于JavaScript这门编程语言的相关知识,并且跟着一些教学视频实现了一些轮播、动画等效果,但我知道这肯定是不够的。JS虽然是一种专为与网页交互而设计的脚本语言,显然也不仅仅只能做这一点点事,我接触到的还只是冰山一角罢了。目前高程3这本书我已经看到第十章了,看得时候是本着“欣赏、了解”的原则去看的,很多地方没有仔细分析,也没有笔记,慢慢地也发现这样过一遍是不行的,原声JS的基础不打好,后面的路就不会太平坦,所以再来一遍,把一些学到的知识和需要深入的记录一下。
笔记从这里开始
一、JavaScript相关介绍
-
JavaScript的组成部分:核心(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)
-
ECMAScript作为核心,规定了语法、类型、语句、关键字、保留字、操作符和对象。现在好像已经最新已经到了ECMAScript第6版,即“ES6”;
-
DOM是针对XML但经过拓展用于HTML的应用编程接口(API)。DOM将整个页面映射为多层次节点结构,DOM级别有1级、2级和3级;
-
BOM使得开发人员控制浏览器页面以外的部分,比如弹出、关闭新的窗口,显示器分比率详细信息等等,它一直以来没有确定的标准,HTML5中把很多很多BOM功能写入了正式规范,以后兼容性会越来越高。
-
现状:目前JavaScript的三个部分在当前主要的五个浏览器(IE、FireFox、Chrome、Safari、Opera)得到了不同程度的支持,所以其兼容性是前端开发中非常重视的问题。
-
HTML中添加JavaScript脚本的方式一般分两种,一是直接在
<scripe></script>中直接写;第二种是引入外部文件:<script src="js/main.js"><script>。 -
延迟脚本:defer属性。表明脚本在执行时不会影响页面的构造,即脚本会延迟到整个页面解析完毕之后再执行(立即下载,延迟执行)。格式:
<script src="js/main.js" defer(="defer")></script>。 -
异步脚本:async属性。告诉浏览器立即下载文件。异步脚本一定会在页面的load事件前执行(异步加载问题在大项目中肯定是要着重研究的,以后再分析)。
二、一些基本概念
(一)语法
一切(变量、函数名和操作符)区分大小写;
标识符: 指变量、函数、属性的名字,或者函数的参数。第一个字符必须是字母、下划线(_)或者美元符号($),JS中的标识符一般用驼峰式大小写格式:oText,aLi等等;
单行注释://多行注释:/* (中间每一行也可以用一个*号来提高可读性) */;
严格模式: ECMAScript第五版引入的一种不同的解析和执行模型(strict mode),代码顶部添加 "use strict";
语句 : 每一句后面用分号结尾,也能用{}将多条语句组合到一起,建议始终在控制语句中使用,例如: if( test) { alert('hello!') };
(二)关键字和保留字记不住,有需要再查看...
(三)变量
ECMAScript中的变量为松散变量,即可以保存任何类型的数据,变量只是一个保存值的占位符.定义变量要用var,作用为 将变量定义为该变量的作用域中的局部变量,退出作用域变量即销毁。(不用var会创建全局变量);
(四)数据类型
五种基本数据类型:Undefined、Boolean、Number、String、Null;复杂数据类型:Object
(五)typeof操作符
typeof操作符用来检测给定变量的数据类型 。检测语法: typeof( 95) 或者 typeof 95;
-
“undefined”——这个值未定义;
-
“boolean”—— 布尔值,有true和false两个值;
-
“string”—— 字符串;
-
“number”—— 数值;
-
“object”—— 对象或是ull;
-
“function”—— 函数 (函数其实也是对象);
-
“null”返回object,因为特殊值null是一个空的对象引用;
(六)undefined类型
只有一个值就是它自己,var声明了一个变量但是没对其初始化时,变量的值就是undefined;
(七)null类型
只有一个值那就是它自己,表示一个空对象指针,注意: 意在保存对象的变量还没有真正保存对象,就应明确地让该变量保存null值;
(八)Boolean类型
两个值:true和false,true不一定等于1,false不一定等于0;
(九)number类型
-
浮点数值中包含一个小数点,极大或极小的数可以用e表示,
var aNumber=1.23e7;(等价于1.23*10的7次方,不要轻易比较两个特点的浮点数); -
数值范围(5e-324,1.7976931348623157e+308)超过这个数值范围则会转换为-Infinity,Infinity;
-
NaN(not a Number)非数值 ,任何数值除以非数值都会返回NaN;isNaN()函数检测一个值是否“不是数值”;
-
数值转换:三个函数:Number()、parseInt()、parseFloat()。Number()可以用于任何数据类型true返回1、false返回0 、null返回0、undefined返回NaN、‘ ’返回0;parseInt()忽略字符串前的空格,找到的第一个字符不是负号或者数字就会返回NaN,返回整数(因为小数点不是有效的数字字符);parseFloat()和parseInt()一样,只是它返回浮点数;
(十)string类型
表示由0或多个16位Unicode字符( 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求)组成的字符序列,即字符串。字符串一旦创造值就不能变,只能销毁原来的再用一个包含新值的字符串填充变量。
(十一)object类型
对象,一组数据和功能的集合。创建自定义对象的语法var a = new object ();object类型是它所有实例的基础, object类型拥有的方法它的实例也拥有。
(十二)操作符
一组用于操作数据值的操作符,包括算术操作符(+-*/)、位操作符、关系操作符和相等操作符...
下次做笔记了再写...

浙公网安备 33010602011771号