文章目录

  • JavaScript实现
    • 1.ECMAScript
    • (1)描述JavaScript
    • (2)版本
    • 2.DOM 文档对象模型 API
    • 3.BOM 浏览器对象模型 API
  • script元素
    • 1.8个属性
    • 2.script标签的位置
    • 3.defer属性
    • 4.async属性
    • 5.动态生成script
  • 行内文件与外部文件
    • 1.使用外部文件的好处
    • 2.noscript可以指定在浏览器不支持脚本时显示的内容。
  • 语法## 标题
    • 1.简介
    • 2.区分大小写
    • 3.标识符规则
    • 4.注释
    • 5.严格模式
    • 6.变量
    • 7.声明风格
  • 数据类型
    • 1.七种基本类型
    • 2.typeof
    • 3.Undefined类型
    • 4.Null类型
    • 5.Boolean
    • 6.Number
    • 7.String
    • 8.Symbol类型
    • 9.Object
  • 操作符
    • 1.一元操作符:++,--,+(正号),-(负号)
    • 2.位操作符:!,&,|,^,<<,>>,>>>
    • 3.逻辑操作符:&&,||,!
    • 4.算术运算:+,-,*,/,%,**
    • 5.关系运算符:>,<,=,>=,<=,==,===,!=,!==
    • 6.条件运算符:? :
    • 7.复制运算符:=,*=,/=,%=,+=,-=,<<=,>>=,>>>=
    • 8.逗号运算符:,
  • 语句
    • 1.if
    • 2.do-while
    • 3.while
    • 4.for
    • 5.for-in
    • 6.for-of
    • 7.标签语句 label
    • 8.break和continue
    • 9.with语句
    • 10.switch
  • 函数
    • 1.定义使用function关键字
    • 2.函数名称和参数名称不能以eval或arguments作为名称
    • 3.两个命名参数不能拥有同一个名称
    • 4.不指定返回值的函数实际上会返回特殊值undefined

发展历史 (1)1995年,网景公司一名叫Brendan Eich的工程师开始为即将发布的Netscape
Navigator2开发一个叫Mocha(后来改名为LiveScript)的脚本语言。为了赶上发布时间,网景公司与Sun公司结为开发联盟,共同完成LiveScript的开发,在正式发布之前,网景将名称改为了JavaScript(为了搭上媒体但是热炒作的Java的顺风车)
(2)1996年,微软进入浏览器领域,同时带来了两个版本的JavaScript,Netscape Navigator的JavaScript
和 IE的JScript。
(3)1997年,JavaScript1.1作为提案被提交给欧洲计算机制造协会,他们花了数月时间打造出ECMA-262,也就是ECMAScript,JavaScript脚本语言标准。
(4)1998年,国际标准化组织(ISO)和国际电工委员会(IEC)也将ECMAScript采纳为标准。自此以后,各家浏览器均以ECMAScript作为自己JavaScript的实现依据。

JavaScript实现

核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)

1.ECMAScript

(1)描述JavaScript

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 全局对象

(2)版本

第一版,本质上跟网景的JavaScript1.1相同,只不过删除了所有浏览器特定的代码,外加少量修为的修改。
第二版,只是做了一些编校工作
第三版,更新了字符串处理、错误定义和数值输出。此外还增加了对正则表示、新的控制语句、try/catch异常处理的支持,以及为了更好地让标准国家化所做的少量修改。
第四版,强类型变量、新语句和数据结构、真正的类和经典的继承,以及操作数据的新手段。
第五版,原生的解析和序列化JSON数据的JSON对象、方便继承和高级属性定义的方法,以及新的增强ECMAScript引擎解释和执行代码能力的严格模式。
第六版,俗称ES6,正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
第七版,也称ES7,只包含少量语法层面的增强,如Array.prototype.includes和指数操作符
第八版,也称ES8,增加了异步函数(async/await)、SharedArrayBuffer及Atomics API,以及Object.values()/Object.entries()/Object.getOwnPropertyDescriptors()和字符串填充方法,明确支持对象字面量最后的逗号。
第九版,也称ES9,异步迭代、剩余和扩张属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订。
第十版,也称ES10,增加了Array.prototype.flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()方法,以及Symbol.prototype.description属性,明确定义了Function.prototype.toString()的返回值并固定了Array.prototype.description属性,明确定义了Function.prototype.toString()的返回值并固定了Array.prototype.sort()的顺序。解决了与JSOn字符串兼容的问题,定义了catch子句的可选绑定。

2.DOM 文档对象模型 API

3.BOM 浏览器对象模型 API

(1)特定于浏览器的扩展
弹出新浏览器窗口的能力
移动、缩放和关闭浏览器窗口的能力
navigator对象,提供关于浏览器的详尽信息
location对象,提供浏览器加载页面的详尽信息
screen对象,提供关于用户屏幕分辨率的详尽信息
performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息
对cookie的支持
其他自定义对象,如XMLHttpRequest和IE的ActiveXObject

script元素

1.8个属性

async:表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部脚本文件有效。
charset:使用src属性指定的代码字符集。
crossorigin:配置相关请求的CORS设置。默认不使用CORS。
defer:表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效,
integerity:允许比对接收到的资源和指定的加密签名已验证子资源完整性。
language(废弃):
src:表示要执行的代码的外部文件。
type:代替language,表示代码块中脚本语言的内容类型(MIME类型)。
ps.不管包含什么代码,浏览器都会按照scrip在页面中出现的顺序依次解释他们,前提是它们使用defer和asyns属性。第二个script元素的代码必须在第一个解释完毕之后才能开始解释。

2.script标签的位置

通常置于所有body内容的底部

3.defer属性

使用的defer标签的cript属性会立即下载,但是延迟执行。并且不一定总是按照顺序执行。

4.async属性

使用async标记该脚本为异步,不必等脚本下载和执行完后再加载页面,同样也不必等到该脚本下载和执行后再加载其他脚本,且它们之间不会按照出现的次序执行,因此,因保证异步执行的脚本之间,不存在依赖关系,且异步脚本不应该在加载期间修改DOM。

5.动态生成script

可以通过动态生成DOM,生成script标签,来达到动态生成script的效果,且此方式生成的文件是异步加载的,并且当执行到该语句时才会加载,可以通过将async设置成false将其改为同步的,或者使用link rel=“preload” href=“xxx.js”> 来显示声明该文件。

行内文件与外部文件

1.使用外部文件的好处

(1)可维护性。
(2)缓存。
(3)适应未来。

2.noscript可以指定在浏览器不支持脚本时显示的内容。

语法## 标题

1.简介

ECMAScript的语法很大程度借鉴了C语言和其他类C语言,如Java和Perl。

2.区分大小写

3.标识符规则

(1)第一个字符必须是一个字母、下划线(_)或美元符号($)
(2)剩下的字符可以是字母、下划线、美元符号或数字。
(3)命名使用驼峰大小写形式。
ps.关键字、保留字、true、false和null不能作为标识符。

4.注释

(1)// 单行注释
(2)/* */ 多行注释

5.严格模式

(1)在脚本开头加上"use strict",将对整个脚本开启严格模式
(2)也可以在函数体开头加上"use strict" 标识对该函数开启严格模式

6.变量

(1)var关键字
在函数中使用var定义变量会使其成为当前函数的局部变量,若省略var,则会在执行该函数的时候,创建一个全局变量。
使用var关键字声明的变量会自动提升到函数作用域顶部,该特性就是var关键字的声明提升,因此利用此特性可以用var关键字重复声明同一个变量。
(2)let关键字
let声明的范围是块作用域,var声明的是函数作用域。即let关键字不会提升。
暂时性死区,在let声明执行前会出现"暂时性死区“,在此阶段引用任何后面才声明的变量都会抛出ReferenceError。
使用let在全局作用域中声明的变量不会成为window对象的属性,使用var声明的变量则会。
(3)const关键字
声明变量时必须同时初始化变量
变量值不可修改,但若定义的是一个对象,则可修改对象内的值,因为const的限制只适用于指向的变量的引用

7.声明风格

(1)只使用let和const,不使用var
(2)优先使用const

数据类型

1.七种基本类型

Undefined、Null、Boolean、Number、String、Symbol和Object。

2.typeof

(1)返回值
undefined 值未定义
boolean 布尔值
string 字符串
number 数值
object 值为对象或null
function 函数
symbol 符号
ps.对null 使用typeof会返回object,因为null被认为是一个对空对象的引用。

3.Undefined类型

(1)只有一个值undefined
(2)若仅声明变量而未初始化,就相当于给变量赋予了undefined值
(3)对未定义的变量使用typeof的返回值也是undefined

4.Null类型

(1)只有一个值null
(2)null表示一个空对象指针
(3)和undefined表面上相等,使用==返回true

5.Boolean

(1)有两个值true和false
(2)使用Boolean()可以将任意数据类型转换为bool值
值为true
String,非空字符串
Number,非0数值
Object,任意对象
Undefined,N/A
值为false
String,“”
Number,0、NaN
Object,null
Undefined,undefined

6.Number

(1)浮点数的精确度最高可达17位小数,但在算术计算中远不如整数精确,如0.1加0.2得到的不是0.3,而是0.30000000000000004,因此不要去测试浮点数的值
(2)Number的最大值保存在Number.MAX_VALUE中,最小值保存在Number.MIN_VALUE中,若超出最大值则返回Infinity,超出最小值返回-Infinity
ps.使用Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY可分别获取到-Infinity和Infinity
(3)NaN(不是数值)用于表示本来要返回数值的操作失败了。
用0除以任意数值
分母是0
任何设计NaN的操作
NaN不等于包括NaN在内的任何值,可以使用isNaN()判断是否非数值,该方法可以将可以转换为数值的值转换为数值
(4)数值转换
Number(),忽略数值前的0
parseInt(),解析八进制和十六进制值
parseFloat(),不解析八进制和十六进制值

7.String

1.字符串在创建之后它的值就不可改变了,若进行字符串拼接操作,会先创建出一个足够容纳两个字符串的空间,将两个字符串放置进去,然后将这个两个字符串销毁。
2.toString()方法可以将任意类型转换成它的字符串表示量
3.模板字面量
(1)定义在``之间
(2)支持跨行定义
(3)使用${变量名}占位

8.Symbol类型

(1)使用Symbol() 函数初始化
(2)使用Symbol.for()进行全局符号注册,若没有该符号,会生成一个该符号并加入到注册表中。
(3)使用符号作为属性
(4)Symbol内置符号

9.Object

(1)定义:一组数据和功能的集合。

操作符

1.一元操作符:++,–,+(正号),-(负号)

2.位操作符:!,&,|,^,<<,>>,>>>

3.逻辑操作符:&&,||,!

4.算术运算:+,-,*,/,%,**

5.关系运算符:>,<,=,>=,<=,,=,!=,!==

6.条件运算符:? :

7.复制运算符:=,*=,/=,%=,+=,-=,<<=,>>=,>>>=

8.逗号运算符:,

语句

1.if

2.do-while

3.while

4.for

5.for-in

一种严格的迭代语句,用于枚举对象中的非符号键属性,所有可枚举的属性都会返回一次,但返回的顺序因浏览器而异

6.for-of

用于遍历可迭代对象的元素

7.标签语句 label

function(){} 用于给语句加标签

8.break和continue

9.with语句

将代码作用域设置为特定的对象

10.switch

函数

1.定义使用function关键字

2.函数名称和参数名称不能以eval或arguments作为名称

3.两个命名参数不能拥有同一个名称

4.不指定返回值的函数实际上会返回特殊值undefined

《JavaScript高级程序设计》学习笔记 JavaScript基本(1)相关推荐

  1. JavaScript高级程序设计学习笔记(三)

    分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...

  2. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  3. JavaScript高级程序设计学习笔记二(在HTML中使用JavaScript)

    在 HTML 中使用 JavaScript 在html中使用JavaScript脚本有两种方式一种是嵌入在HTML中的脚本,另一种是引入外部的脚本.两种方式都离不开<script>元素. ...

  4. javascript高级程序设计 学习笔记 第五章 上

      第五章   引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...

  5. JavaScript高级程序设计--学习笔记(第六章)

    文章目录 第六章 面向对象的程序设计 1. 理解对象 1.1 属性类型 1.2 定义多个属性 1.3 读取属性的特性 2. 创建对象 2.1 工厂模式 2.2 构造函数模式 2.3 原型模式 2.4 ...

  6. JavaScript高级程序设计学习笔记第二十章--JSON

    1.JSON:JavaScript Object Notation, JavaScript 对象表示法. 2.最重要的是要理解它是一种数据格式,不是一种编程语言.虽然具有相同的语法形式,但 JSON ...

  7. JavaScript高级程序设计---学习笔记(四)

    1.全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以. var age = 29;window.color = "red";delete age;/ ...

  8. JavaScript高级程序设计学习笔记--事件

    HTML事件处理程序 <input type="button" value="Click Me" onclick"showMessage()&q ...

  9. JavaScript高级程序设计学习笔记--DOM

    DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Ele ...

  10. JavaScript高级程序设计学习笔记----初识JavaScript

    一.JavaScript概述 1.JavaScript 介绍: 简称JS,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行.主要用来实现网页的动态效果,用户交互及前后端的数据传输等. 2 ...

最新文章

  1. 微软算法100题11 求二叉树中两节点之间的最大距离
  2. 自动机器学习:团队如何在自动学习项目中一起工作?(附链接)
  3. Testing AJAX Applications with VSTS 2008
  4. Educational Codeforces Round 44 (Rated for Div. 2)
  5. windows 下安装 scrapy报错:error: Unable to find vcvarsall.bat
  6. [Golang] GoConvey测试框架使用指南
  7. matlab循环遍历数组_Matlab - 访问for循环中最大值的索引,并使用它从数组中删除值...
  8. 【redis】三种redis数据导出导入方式
  9. shell脚本修改文本中匹配行之前的行的方法
  10. 在Android中利用iText生成PDF
  11. java通过smtp发送电子邮件
  12. Java使用POI导出Excel
  13. android MediaPlayer m3u8 播放
  14. 2016年江苏省普通高等学校第十三届高等数学竞赛试题(本科一级)讲解
  15. 罗大佑的童年用计算机咋弹,罗大佑《童年》吉他弹奏教学-520吉他网
  16. 特斯拉召回43万辆国产车/ 苹果头显最早明年发布/ 网易将在暴雪游戏停运后退款… 今日更多新鲜事在此...
  17. 基于Matlab的三角函数方程组解算方法
  18. Java—泛型、内部类、多继承
  19. 无线地磁传感器可以产生哪些社会效益
  20. 【Solidswork】Solidswork如何画真实螺纹

热门文章

  1. 计算机怎么清理CAD,注册表cad,如何清理cad软件在注册表残留
  2. android dazen root,Magisk作者再度出击,成功ROOT了Android 11
  3. Xcode9安装插件,xcode9安装使用Alcatraz
  4. C11 标准下的 C 语言编程
  5. ffmpeg下载视频
  6. JavaScript 登录注册表单验证
  7. 雷诺方程、脉动运动方程及雷诺应力输运方程的推导
  8. 【js】pagination分页(支持首页,末页,跳转)
  9. CUDA编程入门极简教程
  10. Hadoop完全分布式集群——Hadoop 配置