JavaScript & TypeScript 学习总结

文章目录

  • JavaScript & TypeScript 学习总结
  • 前言
  • 一、JavaScript是什么?
  • 二、JavaScript
    • 1.基本语法
    • 2.操作符
    • 语句
    • 函数
    • 对象Object
    • 数组Array
    • 链式语法
    • 闭包
  • 三、TypeScript是什么?
  • 四、TypeScript
    • 基础语法
    • 函数
    • 数组
    • Map对象
    • 接口
  • 总结

前言

JavaScript 是 Web 的编程语言。
所有现代的 HTML 页面都可以使用 JavaScript。
JavaScript 非常容易学。
JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:
HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为


一、JavaScript是什么?

JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
JavaScript 很容易学习。

二、JavaScript

1.基本语法

1、大小写敏感
2、标识符:第一个字符只能是字母、下划线( _ )或美元符号( $ )之一;
其他字符可以是字母、下划线、美元符号或数字。
3、采用驼峰式格式
4、语句后的分号建议添加,但不必须。
变量:定义变量时要使用 var 操作符,后跟变量名(即一个标识符),如下所示: var message; 这行代码定义了一个名为 message 的变量,该变量可以用来保存任何值。

2.操作符

1、一元操作符 ++ --
2、布尔操作符 && || !
注意:除下列值为假外其余皆为真: false、null、undefined、''、0、NaN
3、算术操作符+ - * / %
4、关系操作符<> <=>= == === != !==
5、条件(问号)操作符 ? :
6、赋值操作符 = += -+ *= /= %=

语句

break    用于跳出循环。
catch   语句块,在 try 语句块执行出错时执行 catch 语句块。
continue    跳过循环中的一个迭代。
do ... while    执行一个语句块,在条件语句为 true 时继续执行该语句块。
for 在条件语句为 true 时,可以将代码块执行指定的次数。
for ... in  用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。
function    定义一个函数
if ... else 用于基于不同的条件来执行不同的动作。
return  退出函数
switch  用于基于不同的条件来执行不同的动作。
throw   抛出(生成)错误 。
try 实现错误处理,与 catch 一同使用。
var 声明一个变量。
while   当条件语句为 true 时,执行语句块。

函数

函数( function)对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。以下是一个函数示例:

function sayHi(name, message) {console.log('Hello ' + name + ',' + message);
}
sayHi('Gridwang', '你好。');

ECMAScript 中的函数在定义时不必指定是否返回值。实际上,任何函数在任何时候都可以通过 return 语句后跟要返回的值来实现返回值。
ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。
也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数。

对象Object

对象 object 是ECMAScript 中使用最多的一个类型。我们常将数据和方法封装在对象中。

创建对象有如下两种方式,我们常用第二种。

//方式一new
var person = new Object();//生成空对象
person.name = 'Elon Musk';//设置对象的属性
person.age = 46;
person.job = 'SpaceX Rocket';
person.sayName = function(){    //设置对象的方法/函数,注意此处console.log(this.name);
};
//方式二字面量
var person = {name: 'Lary Page',age: 47,job: 'Software Engineer',sayName: function(){        //注意此处console.log(this.name);}
};
console.log(person.job);
person.sayName();

虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。

数组Array

ECMAScript 中的数组与其他多数语言中的数组有着相当大的区别。虽然 ECMAScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript 数组的每一项 可以保存任何类型的数据(不建议!)。
也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象,以此类推。而且,ECMAScript 数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
创建数组有以下两种方法:

var colors = new Array('red', 'blue', 'green');
//方式二字面量
var colors = ['red', 'blue', 'green']; // 创建一个包含 3 个字符串的数组
console.log(colors[1]);
colors[3] = 'brown';
console.log(colors.length);
var names = []; // 创建一个空数组
var hyBird = [1, 2, 'haha', {firstName: 'Yong', lastName: 'Wang'}]; //不推荐!
console.log(hyBird[3].firstName);

常用的数组方法有:元素联合、堆栈方法、队列方法、反转数组项、链接方法、分片方法等。

链式语法

链式语法已变得非常流行。实际上这是一种非常容易实现的模式。基本上,你只需要让每个函数返回 this代表包含该函数的对象,这样其他函数就可以立即被调用。

var bird = {//定义对象字面量catapult: function() {console.log( 'Yippeeeeee!' );return this;//返回bird对象自身},destroy: function() {console.log( "That'll teach you... you dirty pig!" );return this;}
};
bird.catapult().destroy();//destroy()后还可以再链接吗?

闭包

闭包是静态语言所不具有的一个新特性。但是闭包也不是什么复杂到不可理解的东西,简而言之,闭包就是:函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。
当在一个函数内定义另外一个函数就会产生闭包

function greeting(name) {var text = 'Hello ' + name; // local variable// 每次调用时,产生闭包,并返回内部函数对象给调用者return function() { console.log(text); }//注意该函数无名称,称为匿名函数
}
var sayHello = greeting('Closure');//调用greeting()返回了什么?
sayHello();  // 注意此处的使用方法。通过闭包访问到了局部变量text

三、TypeScript是什么?

TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。
TypeScript 由微软开发的自由和开源的编程语言。
TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。


四、TypeScript

基础语法

1、TypeScript 程序由以下几个部分组成:
模块
函数
变量
语句和表达式
注释
2、空白和换行:TypeScript 会忽略程序中出现的空格、制表符和换行符。空格、制表符通常用来缩进代码,使代码易于阅读和理解。
3、TypeScript 区分大小写:TypeScript 区分大写和小写字符。
4、TypeScript 注释:注释可以提高程序的可读性。注释可以包含有关程序一些信息,如代码的作者,有关函数的说明等。
5、面向对象:面向对象是一种对现实世界理解和抽象的方法。TypeScript 是一种面向对象的编程语言。面向对象主要有两个概念:对象和类。
对象:对象是类的一个实例
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法是类的操作的实现步骤。

函数

函数只有通过调用才可以执行函数内的代码。语法格式如下所示:

function_name()

函数返回值:有时,我们会希望函数将执行的结果返回到调用它的地方。通过使用 return 语句就可以实现。在使用 return 语句时,函数会停止执行,并返回指定的值。

function function_name():return_type { // 语句return value;
}

带参数函数:在调用函数时,您可以向其传递值,这些值被称为参数。这些参数可以在函数中使用。并可以向函数发送多个参数,每个参数使用逗号 , 分隔:

function func_name( param1 [:datatype], param2 [:datatype]) {
}

数组

数组对象是使用单独的变量名来存储一系列的值。数组非常常用。

var sites:string[];
sites = ["Mary","Rob","Tina"]

Array 对象:我们也可以使用 Array 对象创建数组。Array 对象的构造函数接受以下两种值:表示数组大小的数值。初始化的数组列表,元素使用逗号分隔值。

var arr_names:number[] = new Array(4)  for(var i = 0; i<arr_names.length; i++) { arr_names[i] = i * 2 console.log(arr_names[i])
}

多维数组:一个数组的元素可以是另外一个数组,这样就构成了多维数组(Multi-dimensional Array)。最简单的多维数组是二维数组,定义方式如下:

var arr_name:datatype[][]=[ [val1,val2,val3],[v1,v2,v3] ]

Map对象

Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。Map 是 ES6 中引入的一种新的数据结构。
TypeScript 使用 Map 类型和 new 关键字来创建 Map:

let myMap = new Map();

初始化 Map,可以以数组的格式来传入键值对:

let myMap = new Map([["key1", "value1"],["key2", "value2"]]);

Map 相关的函数与属性:

map.clear() – 移除 Map 对象的所有键/值对 。
map.set() – 设置键值对,返回该 Map 对象。
map.get() – 返回键对应的值,如果不存在,则返回 undefined。
map.has() – 返回一个布尔值,用于判断 Map 中是否包含键对应的值。
map.delete() – 删除 Map 中的元素,删除成功返回 true,失败返回 false。
map.size – 返回 Map 对象键/值对的数量。
map.keys() - 返回一个 Iterator 对象, 包含了 Map 对象中每个元素的键 。
map.values() – 返回一个新的Iterator对象,包含了Map对象中每个元素的值 。

接口

接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。
TypeScript 接口定义如下:

interface interface_name {
}

接口和数组:接口中我们可以将数组的索引值和元素设置为不同类型,索引值可以是数字或字符串。
设置元素为字符串类型:

interface namelist { [index:number]:string
}
// 类型一致,正确
var list2:namelist = ["Google","Runoob","Taobao"]
// 错误元素 1 不是 string 类型
// var list2:namelist = ["Runoob",1,"Taobao"]

接口继承:接口继承就是说接口可以通过其他接口来扩展自己。Typescript 允许接口继承多个接口。继承使用关键字 extends。
单接口继承语法格式:

Child_interface_name extends super_interface_name

总结

TypeScript 可以使用 JavaScript 中的所有代码和编码概念,TypeScript 是为了使 JavaScript 的开发变得更加容易而创建的。例如,TypeScript 使用类型和接口等概念来描述正在使用的数据,这使开发人员能够快速检测错误并调试应用程序。
1、TypeScript 从核心语言方面和类概念的模塑方面对 JavaScript 对象模型进行扩展。
2、JavaScript 代码可以在无需任何修改的情况下与 TypeScript 一同工作,同时可以使用编译器将 TypeScript 代码转换为 JavaScript。
3、TypeScript 通过类型注解提供编译时的静态类型检查。
4、TypeScript 中的数据要求带有明确的类型,JavaScript不要求。
5、TypeScript 为函数提供了缺省参数值。
6、TypeScript 引入了 JavaScript 中没有的“类”概念。
7、TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。

JavaScript TypeScript 学习总结相关推荐

  1. JavaScript TypeScript学习总结

    本文章为web课学习JavaScript & TypeScript的学习总结 JavaScript & TypeScript学习总结 JavaScript JS介绍 JS基础 标识符 ...

  2. JavaScript TypeScript学习总结

    目录 一. JavaScript 1.JavaScript简介 2.基本语法 2.1 大小写敏感 2.2 标识符 2.3 注释 2.4 语句 2.4 关键字.保留字 2.5 变量 2.6. 操作符 2 ...

  3. 教你用Vue渐进式搭建聊天室,从JavaScript=TypeScript

    前言 Vue+Socket.io这个轮子已经有很多人造过了,为了不重复造轮子,我将本项目以三阶段实现(大家可以在github中的Releases查看): 纯前端(Vuex) 后端+前端(JavaScr ...

  4. JavaScript = TypeScript 类入门

    尝试重写 在此之前,通过<JavaScript => TypeScript 入门>已经掌握了类型声明的写法.原以为凭着那一条无往不利的规则,就可以开开心心的重写 JS 项目了.当我跃 ...

  5. RUST直接升钢指令_[译]参照TypeScript学习Rust-part-1

    [译]参照TypeScript学习Rust-1 · 前端在线​regx.vip 对于前端,笔者比较认可Rust作为前端开发技术栈投资的,本文系列翻译旨在分享.学习Rust这门语言. Rust常常被认为 ...

  6. GitHub免费提供机器学习扫描代码漏洞,现已支持JavaScript/TypeScript

    晓查 发自 凹非寺 量子位 | 公众号 QbitAI 今天,GitHub更新一项实验版新功能. 用上机器学习后,新版CodeQL代码扫描服务可以帮开发者发现更多安全漏洞. 目前在JavaScript和 ...

  7. typescript 接口 java_[Java教程]【TypeScript】TypeScript 学习 2——接口

    [Java教程][TypeScript]TypeScript 学习 2--接口 0 2015-06-19 12:00:28 在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScr ...

  8. TypeScript 学习一 参数,函数,析构表达式

    1,TypeScript是由微软开发的,不过新出的Angular2框架就是谷歌公司由TypeScript语言编写的,所以现在TypeScript是有微软和谷歌一起支持的: 2,TypeScript在j ...

  9. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  10. TypeScript学习总结

    TypeScript学习总结 前言 一.TypeScript是什么? 二.JavaScript 与 TypeScript 的区别 三.TypeScript基础 3.3.TypeScript 基础语法 ...

最新文章

  1. 征途linux mysql_MySql征途之mysql常用命令
  2. vue中 静态文件引用注意事项
  3. Linux wc命令统计文件大小
  4. Centos下Linux下解决root用户Operation not permitted
  5. Android属性动画 TypeEvaluator
  6. boost::statechart模块实现触发事件测试
  7. [PHP] 项目实践中的自动加载实现
  8. SPOJ687 Repeats(重复次数最多的连续子串)
  9. oracle 会话 lock,相克军_Oracle体系_随堂笔记014-锁 latch,lock
  10. g++ linux 编译开栈_使用g++编译器扩大程序可用栈空间
  11. 老外大赞iPhone 12系列:全面屏版iPhone 4 外形史上最佳
  12. Python字典的操作与使用
  13. mac中 安装mysql无法启动_Mac 下安装MySQL(dmg方式),无法启动
  14. JavaSE基础学习
  15. 链栈的基本操作(入栈,出栈)
  16. Python编辑器你选哪个?我选PyCharm
  17. OllyDbg笔记-Olly Advanced插件使用
  18. STM32开发基础知识——OLED开发基础
  19. Oracle TRUNCATE语法
  20. 代码实现-CVPR2020-Dynamic Convolution: Attention over Convolution Kernels

热门文章

  1. matlab gui仿真实验,基于Matlab GUI设计的光学实验仿真
  2. Wget 下载 ILSVRC12 数据集
  3. ILSVRC2012下载+训练
  4. 常用服务器管理口IP及账号密码(持续更新)
  5. python实现pdf阅读器_PyQt5 从零开始制作 PDF 阅读器(一)
  6. springboot接收前端的数组_SpringBoot如何接收数组参数的方法
  7. linux 开启共享文件,文件夹共享权限设置,linux设置文件夹权限-
  8. 《自拍教程74》Python 假装企业微信电脑在线并定时关机,骗老板的好方法!
  9. 如何判断企业微信是否在线?
  10. 语法长难句【刘晓艳】英语