目录
1.JS概述
1.1 JS初始
1.2 Javascript与Java的关系
1.3 JS组成
1.4 JavaScript特点
1.4.1 解释型语言
1.4.2 动态语言
1.4.3 类似于 C 和 Java 的语法结构
1.4.4 基于原型的面向对象
1.4.5 严格区分大小写
1.4.6 弱语言
1.5 ECMAScript 版本
2.JS三种使用方式
2.1 内部脚本
2.2 外部脚本
2.3 嵌入元索事件中
3 变量命名和声明
3.1 JavaScript 变量的命名规范
3.2 变量声明
4 数据类型及其转换
4.1 原始类型(基本类型)
4.2.1 数字类型Number
4.2.2 字符串类型String
4.2.3 布尔类型Boolean
4.2.4 空Null
4.2.5 未定义Undefined
null,undefined,NaN的区别
4.2 引用类型(对象类型):
4.3 类型转换
5 函数
5.1 函数声明:
5.2 函数调用:
6 数组
6.1 创建数组:
6.2 访问数组:
7.关于for循环
7.1 for-each
7.2 for-in
7.3 for-of
1.JS概述
1.1 JS初始
JavaScript是网景(NetScape)公司的 布兰登·艾奇 Brendan Eich开发的,最初叫做LiveScript。LiveScript的出现让浏览器更加生动(live),使得页面更具有交互性。
JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
1.2 Javascript与Java的关系
JavaScript和java没有任何关系,只是语法类似。
JavaScript运行在浏览器中,代码由浏览器解释后执行。而Java运行在JVM中。
JavaScript的“目标程序”以普通文本形式保存,这种语言都叫做"脚本语言“。Java的目标程序已.class形式存在,不能使用文本编辑器打开,不是脚本语言。
Java和JavaScript区别与联系
1998年网景公司由“美国在线”公司收购。
网景公司最著名的就是“领航者浏览器”:Navigator浏览器。
LiveScript的出现,最初的时候是为Navigator浏览器量身定制一门语言,不支持其他浏览器。
微软一看不行,研发了只支持IE浏览器的脚本语言。JScript。在两者语言共存的时代,程序员需要写两套程序。这时一个叫做ECMA组织(欧洲计算机制造商协会)根据JavaScript制定了ECMA-262标准,叫做ECMA-Script.
1.3 JS组成
- 核心(ECMAScript)
- 文档对象模型(DOM,Document Object Model),让JS有能力与网页进行对话
- 浏览器对象模型(BOM,Browser Object Model)让JS有能力与浏览器进行对话
1.4 JavaScript特点
JavaScript是运行在浏览器上的脚本语言,简称JS。
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
- 解释型:运行之前是不需要编译的,运行之前不会检查错误,直到碰到错误为止
- 编译型:对源码进行编译,还能检查语法错误(C/C++)
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
1.4.1 解释型语言
JavaScript是一门解释型语言,所谓解释型值语言是指不需要被编译为机器码在执行,而是直接由JS引擎执行。 由于少了编译这一步骤,所以解释型语言开发起来尤为轻松,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了JIT技术,使得运行速度得以改善。
1.4.2 动态语言
JavaScript是一门动态语言,所谓的动态语言可以暂时理解为在语言中的一切内容都是不确定的。 比如一个变量,这一时刻是个整型,下一时刻可能会变成字符串了。当然这个问题我们以后再谈。不过在补充一句动态语言相比静态语言性能上要差一些,不过由于JavaScript中应用的JIT技术,所以JavaScript可能是运行速度最快的动态语言了。
1.4.3 类似于 C 和 Java 的语法结构
JavaScript的语法结构与C和Java很像,向for、if、while等语句和Java的基本上是一模一样的。所以有过C和Java基础的同学学习起来会轻松很多。不过JavaScript和与Java的关系也仅仅是看起来像而已。
1.4.4 基于原型的面向对象
JavaScript是一门面向对象的语言。啥是对象?下次聊。
Java也是一门面向对象的语言,但是与Java不同JavaScript是基于原型的面向对象。啥是原型?下次聊。
1.4.5 严格区分大小写
JavaScript是严格区分大小写的,也就是abc和Abc会被解析器认为是两个不同的东西。
1.4.6 弱语言
数据类型由数据决定
1.5 ECMAScript 版本
JavaScript 已经由 ECMA(欧洲计算机制造商协会)通过 ECMAScript 实现语言的标准化
| 年份 | 名称 | 描述 |
|---|---|---|
| 1995 | 网景公司开发了JavaScript | |
| 1996 | 微软发布了和JavaScript兼容的JScript | |
| 1997 | ECMAScript 1 | 第一个版本 ECMA-262标准 |
| 1998 | ECMAScript 2 | 版本变更 |
| 1998 | DOM Level1的制定 | |
| 1998 | 新型语言DHTML登场. | |
| 1999 | ECMAScript 3 | 添加正则表达式 添加 try/catch |
| 2000 | DOM Level2的制定 | |
| 2002年 | ISO/ IEC 16262:2002的确立 | |
| 2004年 | DOM Level3的制定 | |
| 2005年 | 新型语言AJAX登场 | |
| 2009 | ECMAScript 5 | 添加 "strict mode",严格模式 添加 JSON 支持,新型语言HTML5登场 |
| 2011 | ECMAScript 5.1 | 版本变更 |
| 2015 | ECMAScript 6 | 添加类和模块 |
| 2016 | ECMAScript 7 | 增加指数运算符 (**) 增加 Array.prototype.includes |
2.JS三种使用方式
2.1 内部脚本
JavaScript源代码可以出现在文档头部(
)和文档体部( )JavaScript直接方式 Hello World
2.2 外部脚本
在HTML页面中引用外部JavaScript脚本的语法格式如下所示:
2.3 嵌入元索事件中
JavaScript脚本也可以直接嵌入到HTML元素中去,这种方式多见于处理事件时
3 变量命名和声明
变量是一种使用方便的占位符,用于引用计算机内存地址。 我们可以把变量看做存储数据的容器。
3.1 JavaScript 变量的命名规范
- 变量名称可以包含数字,字母,下划线,美元$符号,不能包含其他特殊字符,包括空格。
- 变量名不能以数字开头。
- 不能使用JS的关键字和保留字
- 命名尽量含有对应意思,见名知意
- 采用驼峰命名
(JavaScript 语句和 JavaScript 变量都对大小写敏感.)
3.2 变量声明
当一个变量声明的时候没有使用var关键字,那么不管这个变量是在哪里声明的,都是全局变量。声明过程中不要省略关键字var,省略则表示全局变量
- 全局变量在函数体之外声明。浏览器关闭的时候才会销毁。
- 局部变量:在函数体内部声明。在函数体执行完后才销毁。
let声明:只在let命令所在的代码块内有效
const声明:只读常量,值不能再改变
4 数据类型及其转换
4.1 原始类型(基本类型)
4.2.1 数字类型Number
4.2.1 数字类型Number
如:NaN,表示Not a Number不是一个数字,但是属于Number类型。
Infinity,表示无穷大。
0,-1,123,…小数,复数,无穷大都是属于number类型。
除数为0时,结果为无穷大。
函数isNaN(数据):结果为true表示不是一个数字。
parseInt()函数:可以将字符串自动转换成数字。保留Int
parseFloat()函数:将字符串转换成数字。
Math.Ceil()函数:向上取整。2.1会变为3。
4.2.2 字符串类型String
1.在JS当中字符串可以使用单引号和双引号。
2.在JS当中,怎么创建字符串对象
第一种:var s=“sag”;(小String,属于String类型)
第二种:var a2= new String(“ab”);(大String,属于Object类型)
Sting是一个内置的类,可以直接使用。
3.无论是小String还是大Sting字符串的长度相同。其中又一个length属性求长度(x.length)
常用函数:
indexof: 获取指定字符串在当前字符串中第一次出现的索引
lastIndexof
replace
substr
substring
toLowerCase
toUpperCase
spilt 拆分字符串
例如:alert(“fasdf".indexof(“sdf”));
replace只替换最前面一个子字符串
如果想全部替换需要使用正则表达式。
substr和substring的区别。
substr(startIndex length)
substring(startIndex endIndex)左闭右开。
4.2.3 布尔类型Boolean
4.2.4 空Null
4.2.5 未定义Undefined
null,undefined,NaN的区别
4.2.5 未定义Undefined
null,undefined,NaN的区别
1.数据类型不一致
alert(typeof null);//Object alert(typeof NaN);//number alert(typeof undefined);//undefined
2.null和undefined可以等同
alert(null=NaN);//false alert(null=undefined);//true alert(underfined=NaN);false
在JS当中有两个比较特殊的运算符:
1."==" :等同运算符:只判断值是否相等(双等号)
2."= = =":全等运算符:既判断值是否相等,又判断数据类型是否相等。(三等号)
alert(11 == ture);//true alert(11=== ture);//false
4.2 引用类型(对象类型):
- 简单数据类型Object:一组数据的集合
- 数组Array
- 函数Function
- 日期Date
- 正则表达式对象RegExp
- 包装类型
- 首先Object类型是所有类型的超类
自定义的任何类型,默认继承Object。 - Object的prototype属性
作用:给类动态地扩展属性和函数。 - Object类的函数:
toString()
valueof()
toLocalString() - 在JS中定义的类默认继承Object的属性和函数。
4.3 类型转换
- 隐式转换:
- 函数typeof()
- NaN
- 显示转换
- toString()
- parseInt()
- parseFloat()
- Number()
5 函数
5.1 函数声明:
自定义的任何类型,默认继承Object。
作用:给类动态地扩展属性和函数。
toString()
valueof()
toLocalString()
- 隐式转换:
- 函数typeof()
- NaN
- 显示转换
- toString()
- parseInt()
- parseFloat()
- Number()
5 函数
5.1 函数声明:
function 函数名(){
可执行语句;
}
5.2 函数调用:
任何JS的合法位置都可以调用;
语法:函数名称();
6 数组
6.1 创建数组:
- 数组直接量:var arr=[];
- 用new:var arr=new Array();
6.2 访问数组:
- 固定套路:
- 获得最后一个元素:arr[arr.length-1]
- 获得倒数第n个元素的位置:arr[arr.length-n]
- 数组缩容
- 遍历数组
- 三个不限制:
- 不限制数组的元素个数
- 不限制下标越界
- 不限制元素的数据类型
7.关于for循环
7.1 for-each
- 数组直接量:var arr=[];
- 用new:var arr=new Array();
6.2 访问数组:
- 固定套路:
- 获得最后一个元素:arr[arr.length-1]
- 获得倒数第n个元素的位置:arr[arr.length-n]
- 数组缩容
- 遍历数组
- 三个不限制:
- 不限制数组的元素个数
- 不限制下标越界
- 不限制元素的数据类型
7.关于for循环
7.1 for-each
- 获得最后一个元素:arr[arr.length-1]
- 获得倒数第n个元素的位置:arr[arr.length-n]
- 数组缩容
- 遍历数组
- 不限制数组的元素个数
- 不限制下标越界
- 不限制元素的数据类型
7.1 for-each
方法对数组的每个元素执行一次提供的函数。
用来遍历数组,不能用来遍历对象,该方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数
forEach方法中的function回调有三个参数:
-
遍历的数组内容
-
对应的数组索引,
-
数组本身
语法:
[ ].forEach(function(value,index,array){
//code something
});
7.2 for-in
可以遍历对象,尽量不要使用于遍历数组
7.3 for-of
用来遍历数组,不能遍历对象
可以使用break,continue和return



