JavaScript简介
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
是一种解释性脚本语言(代码不进行预编译)。
主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows,Linux,Mac等)。
JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
Javascript运行环境
Javascript运行环境有两种,一个是浏览器运行环境,另一个则是Node.js运行环境
浏览器环境下JavaScript主要由三部分组成,分别是ECMAScript、DOM和BOM,BOM和DOM
Node.js中以ECMAScript为基础,扩展出了I/O操作、文件操作、数据库操作等
V8引擎:简单理解就是负责解析和执行代码
内置库:运行环境提供的服务
基本语法
变量
JavaScript中用var关键字(variable的缩写)来声明变量
var test=20;
test="张三";
JavaScript是一门弱类型语言,变量可以存放不同类型的值
在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var声明一次,例如:
数据类型
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在JavaScript中定义了以下几种数据类型:
Number , JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型;
字符串是以单引号’或双引号"括起来的任意文本,比如’abc’,"xyz"等等。字符串常见的操作如下:
对象
对象是一组键值对的集合,是一种无序的复合数据集合
对象的键名基本都是字符串,键名加不加引号都是一样的
对象的每一个键名又称为属性(property)
键值可以是任何数据类型,当它是一个函数时,我们把这个属性称为“方法”,可以象函数那样调用
注释
JavaScript注释可用于提高代码的可读性。JavaScript注释JavaScript不会执行注释.我们可以添加注释来对JavaScript进行解释,或者提高代码的可读性。单行注释 以//开头。JavaScript多行注释多行注释以/*开始,以*/结尾使用注释来阻止执行(可用于调试)
单行注释示例
多行注释示例
数组
创建数组:
打印数组元素:
显示数组长度:
通过数组下标更改数组当中第一个元素
给数组的长度设置为10
函数
函数是js中很重要的数据类型(复杂数据类型)
- 注意点:循环嵌套只能嵌套两个,不然的话,代码维护很不方便
函数就是:封装了具有特定功能的代码块!
优点:就是复用性强,一调用即可! - 注意点2:函数不调用不执行,调用的方法就是 函数名()
函数声明式创建函数
function f1() {
//需要编写的代码
}
// function: 声明函数的关键字,表示接下来是一个函数了
// f1: 函数的名字,我们自己定义的(遵循变量名的命名规则和命名规范)
// (): 必须写,是用来放参数的位置 — f1() 定义的是形式参 f1()调用的时候是实参
// {}: 就是我们用来放一段代码的位置(也就是我们刚才说的 “盒子”)
函数的调用
作用域:
作用域分为全局作用域和局部作用域
全局作用域:就是在script脚本内声明的声明的变量(不是在函数内部局部区域,块级区域声明的变量),还有函数的传递进去的参数,也是有可能属于全局变量(假如参数传递的是变量,那么根据这个变量判断(var 声明在外部的,也就是全局变量,假如是数值,那么就是这个数值了)
局部作用域:在函数内部调用的变量等,就是局部作用域,但是有一个例外,就是当函数中的这个变量,未使用var或者let的话,把这个变量解析
TypeScript
TypeScript简介
TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统
1、布尔值 → boolean
同js一样有两个值——true 和 false
定义:let isNew: boolean = true;
2、数字 → number
同js一样有整形和浮点数类型
定义:let age: number = 22;
3、字符串 → string
同js一样,字符串的值使用单引号或者双引号包裹
定义:let myName: string = “青衣浏阳”;
4、数组
有两种方式可以定义数组。
第一种:可以在元素类型后面接上 [],表示由此类型元素组成的一个数组。
定义:let list: number[] = [1, 2, 3];
第二种:是使用数组泛型,Array<元素类型>
定义:let arr1: any[] = [1, “2”, 3, “4”]; // 这个数组中可以假如任意类型的元素
5、元组 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同,它规定了数组的长度和每个位置的数据类型。
定义let arr2:[number, string, number] = [1,“2”,3];
赋值需要严格按照定义的长度和类型对应,
enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。
枚举类型提供的一个便利是你可以由枚举的值得到它的名字。 例如,我们知道数值为2,但是不确定它映射到Color里的哪个名字,我们可以查找相应的名字:
Any
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:
Void
声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null:
let unusable: void = undefined;
Null 和 Undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大:
函数
函数的类型注解
函数的可选参数
函数的剩余参数
函数的重载
类
在面向对象语言中,类是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。
在 TypeScript 中,我们可以通过 Class 关键字来定义一个类:
类的继承