一、js简介

js是一种专为与网页交互而设计的脚本语言,由以下三个不同的部分组成:

1.ECMAScript,由ECMA-262(它规定了语言的这些组成部分:语法,类型,语句,关键字,保留字,操作符,对象)定义,提供核心语言功能;(ECMAScript就是对实现该标准ECMA-262规定的各个方面内容的语言的描述。)

2.文档对象模型(DOM)是针对XML但经过扩展用于HTML的应用程序编程接口。DOM把整个页面映射为一个多层节点结构。

如下面这个HTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>mytitle_Dom</title>
</head>
<body><p>hello world!</p>
</body>
</html>

在DOM中,这个页面可以如1.1所示的分层节点图表示

3.浏览器对象模型(BOM),处理浏览器窗口和框架。

总而言之,理解下:

1.ECMAScript 是ECMA(欧洲计算机制造协会)注册的标准,除此之外还有微软的Jscript标准 和网景的JavaScript 标准。
2.dom和bom 都是JavaScript 中的宿主对象。
一般来说JavaScript 都指的是ECMAScript

二、在HTML中使用JS

2.1<script>元素

HTML4.01为<script>定义了下列5个属性。

1)charset:可选。表示通过src属性指定的代码的字符集,大多数浏览器会忽略这个值。

2)defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。

3)language:已废弃。原来用于表示编写代码使用的脚本语言,大多数浏览器会忽略这个值。

4)src:可选。表示包含要执行代码的外部文件。

5)type:必需。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(也成为MIME类型)。虽然text/javascript和text/ecmascript都已经不被推荐使用,但还是可以看到经常使用text/javascript。实际上,服务器在传送JS文件时使用的MIME类型通常是application/x-javascript,但在type中设置这个值却可能导致脚本被忽略。

2.1.1标签的位置

  按照惯例,所有<script>元素都应该放在页面的<head>元素中,这种做法的目的是把所有外部文件(包含CSS文件和JavaScript文件)的引用都放在相同的地方。可是,在文档<head>元素中包含所有JavaScript文件,意味着必须等到全部JS代码都被下载,解析和执行完成以后,才能呈现页面的内容(浏览器遇到<body>标签才开始显示内容)。如果有很多JS代码要加载,那么会导致浏览器呈现明显的延迟,延迟期间,浏览器窗口将会是一片空白。为了避免这个问题:

①可将JS引用放在<body>元素中,放在页面的内容后面。

②延迟脚本,<script>标签定义了defer属性。这个属性的用途是表明脚本在执行时不会影响页面构造,也就是说,脚本会被延迟到整个页面都解析完毕后再运行。

2.1.2在XHTML中的用法

  在HTML中,有特殊的规则则用以确定<script>元素中的哪些内容可以被解析,但这些特殊的规则在XHTML中不适用。如小于号("<")在XHTML中就需要用"&lt",不过可以用一个CData片段来包含JS代码

<script type="text/javascript">
<![CDATA[function compare(a,b){}
]]
</script>

三、基本概念

3.1变量

ECMAScript的变量是松散类型(可以用来保存任何类型的数据)的,每个变量仅仅是一个保存值的占位符而已。定义变量时用var操作符(var是一个关键字),后跟变量名(即一个标识符)。

  注:在函数体内用var 定义的变量是局部变量,函数退出后就会被销毁。不过在函数体内定义的变量省略var操作符后,此变量就是全局变量,只要调用过一次函数,此变量就有了定义,在函数外部可以被访问到。

3.2数据类型

参见http://www.cnblogs.com/wj204/p/3402204.html

3.3操作符

①一元操作符:

递增和递减操作符:

var s1="2";

var s2="z";

var b=false;

var f=1.1;

var o={valueOf:function(){return -1;}};

s1++;//值变成数值3

s2++;//值变成NaN

b++;//值变成数值1

f--;//值变成0.100000000(由于浮点舍入错误所致)

o--;//值变成数值-2

一元加和减操作符:

var s1="01";

var s2="1.1";

var s3="z";

var b=false;

var f=1.1;

var o={valueOf:function(){return -1;}};

s11=+s1;//值变成数值1

s12=-s1;//值变成数值-1

s21=+s2;//值变成数值1.1

s22=-s2;//值变成数值-1.1

s31=+s3/-s3;//值变成NaN

b=+b/-b;//值变成了数值0

f11=+f;//值仍然是1.1

f12=-f;//值变成-1.1

o11=+o;//值变成数值-1

o12=-o;//值变成数值1

3.4函数

3.4.1理解参数

  在ECMAScript中的参数在内部用一个数组来表示。在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。其实,arguments对象只是与数组类似,因为可以使用方括号语法访问它的每一个元素(即第一个元素是arguments[0],第二个元素是arguments[1])

function howManyArgs(){

  alert(arguments.length);

}

howManyArgs("string",45);  //2

howManyArgs);  //0

howManyArgs(12);  //1

与参数有关的方面:

①“重载”特性:

function doAdd(){

  if(arguments.length==1){

    alert(arguments[0]+10);

  }else if(arguments.length==2){

    alert(arguments[0]+arguments[1]);

  }

}

doAdd(10); //20

doAdd(30,20);//50

②arguments对象可以与命名参数一起使用,如:

function doAdd(num1,num2){

  if(arguments.length==1){

    alert(num1+10);

  }else if(arguments.length==2){

    alert(arguments[0]+num2);

  }

}

doAdd(10); //20

doAdd(30,20);//50

  在重写后的这个doAdd()函数中,两个命名参数num1,num2都与arguments对象一起使用。由于num1的值与arguments[0]的值相同,因此它们可以互换使用。

注:没有传递值的命名参数将被自动赋予undefined值。这就跟定义了变量却没有初始化一样。(ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。)

3.4.2没有重载

  如果在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数(前面定义的函数将无效)【要做到重载可以跟3.4.1.①一样,通过检查函数中参数的类型和数量并作出不同的反应,这模仿了方法的重载】

小结:

  JavaScript的核心语言特性在ECMA-262中是以名为ECMAScript的伪语言的形式来定义的。ECMAScript中包含了所有基本的语法、操作符、数据类型以及完成基本的计算任务所必需的对象,但没有对取得输入和产生输出的机制做出规定。理解ECMAScript及其纷繁复杂的各种细节,是理解其在Web浏览器中的实现--javascript的关键。目前大多数实现所遵循的都是ECMA-262第三版中定义的ECMAScript。以下简要总结下ECMAScript中的基本要素:

①:ECMAScript中的基本数据类型包括undefined,null,boolean,number和string;

②:ECMAScript没有为整数和浮点数值分别定义不同的数据类型,Number类型可用于表示所有数值;

③:ECMAScript中也有一种复杂的数据类型,即Object类型,该类型是这门语言中所有对象的基础类型;

④:ECMAScript提供了很多与C及其他类C语言中相同的基本操作符,包括算术操作符、布尔操作符、关系操作符、相等操作符及赋值操作符等。

⑤:ECMAScript从其他语言中借鉴了很多流控制语句,例如if语句、for语句和switch语句等。ECMAScript中的函数与其他语言中的函数有不同之处(没注意到)

⑥无须指定函数的返回值,因为任何ECMAScript函数都可以在任何时候返回任何值。

7:未指定返回值的函数返回的是一个特殊的undefined值。ECMAScript中也没有函数签名的概念,因为其函数参数是以一个包含零或多个之的数组的形式传递的。

转载于:https://www.cnblogs.com/wj204/p/4008732.html

js高程读书笔记(1-3章)相关推荐

  1. 《Java编程思想》读书笔记 第十三章 字符串

    <Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...

  2. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  3. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  4. PMP读书笔记(第9章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第九章 项目资源管理 项目资源管理 项目资源管理的核心概念 项目资源管理的趋势和新兴实践 裁剪考虑因素 在敏捷或适应型环境中需要考虑的因素 9 ...

  5. PMP读书笔记(第2章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第二章 项目运行环境 2.1 概述 2.2 事业环境因素 2.2.1 组织内部的事业环境因素 2.2.2 组织外部的事业环境因素 2.3 组织 ...

  6. PMP读书笔记(第1章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第一章 引论 1.1 概述指南和目的 1.1.1 项目管理标准 1.1.2 通用词汇 1.1.3 道德与专业行为规范 1.2 概述指南和目的 ...

  7. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  8. 计算机系统导论第九章,计算机系统导论 -- 读书笔记 -- 第三章 程序的机器级表示 (持续更新)...

    计算机系统导论 -- 读书笔记 -- 第三章 程序的机器级表示 (持续更新) 第三章 程序的机器级表示 3.1 历史观点 3.2 程序编码 1. 命令行 (1)编译 Linux> gcc -Og ...

  9. Machine Learning in Action 读书笔记---第5章 Logistic回归

    Machine Learning in Action 读书笔记 第5章 Logistic回归 文章目录 Machine Learning in Action 读书笔记 一.Logistic回归 1.L ...

  10. Java 核心技术卷 II(第 8 版) – 读书笔记 – 第 1 章(下)

    22.一旦获得了一个 Charset,就可以在 Java 的 Unicode 和指定的编码格式之间进行转化,下面以 GBK 和 Unicode 之间做为例子. 从 Unicode 到 GBK: imp ...

最新文章

  1. python 漂亮打印 pprint 简写
  2. 【Win7下Android native code的编译和调试】
  3. 图片增强来解决图片不足问题
  4. iOS中UITextField 使用全面解析
  5. python协程详解_对Python协程之异步同步的区别详解
  6. 想学python编程-【经验分享】新手如何快速学好Python?
  7. python简介怎么写-Python开发工程师岗位项目经历怎么写
  8. ActiveSync合作关系对话框的配置
  9. 文本编辑器实现关于对话框的功能
  10. 三层交换的HSRP与VRRP
  11. Quartz 2d绘图
  12. 自定义带进度条的WebView , 增加获取web标题和url 回掉
  13. C#LeetCode刷题之#661-图片平滑器( Image Smoother)
  14. 工作——常用语法记录
  15. 关于Oracle默认用户名system密码不正确登录不上解决方案
  16. dispatcherServlet-servlet.xml(SSM maven 项目)
  17. Silverlight 简明教程(3) -- 资源、样式控制、视觉状态以及部署
  18. hbase集群 数据写入_大数据入门必学 - Hbase集群搭建
  19. PHP表格数据Excel转图片输出通用方法,列可自动拓展
  20. ps教程完整版(来自百度网盘)

热门文章

  1. java5个成员_JavaSE基础知识(5)—面向对象(5.2类的成员)
  2. 孤岛惊魂4服务器稳定吗,《孤岛惊魂5》究竟好不好玩 让我来告诉你(缺点)
  3. MATLAB--查表
  4. 算法:回溯十七 Combination Sum III挑选数组中规定个数元素的和为指定数
  5. hadoop 如何连beeline_Hadoop家族新成员Hbase重磅来袭
  6. python入侵网站_入侵服务器简介_python信息安全实战_Python视频-51CTO学院
  7. 多头注意力比单头好在哪?
  8. 177.第N高的薪水
  9. 合作的进化 6-10
  10. 15投影矩阵与Moore-Penrose逆(1)