javaScript & TypeScript 学习总结

javaScript & TypeScript 学习总结

JavaScript笔记

1、概述

1.1概念

JavaScript 是脚本语言,是一种解释性脚本语言(代码不进行预编译)

JavaScript 是一种轻量级的编程语言。

JavaScript 是可插入 HTML 页面的编程代码。

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

JavaScript 很容易入门。

1.2 作用

1、为网页添加各式各样的动态功能,

2、为用户提供更流畅美观的浏览效果。

通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

1.3 用法

JavaScript通常简称为js,或者js脚本。

1.3.1 HTML页面中的javaScript

​ 在html页面中的脚本必须位于script围堵标签之间,script标签放在head中可以,body中也可以,

放在最后也可以,对位置要求不严格

我们可以在 HTML 文档中放入不限数量的script标签,通常的做法是把内容统一放入head或者页

面底部。这样就可以把它们安置到同一处位置,不会干扰页面的内容。

PS:有些案例中可能会在 script 标签中出现type=“text/javascript”。现在完全可以省略了,JavaScript已经是所有现代浏览器以及 HTML5 中的默认脚本语言。

1.3.2 外部的javaScript

可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。外部 JavaScript 文件的文件扩展名是 .js

当我们使用外部文件时,在HTML页面的script 标签的 “src” 属性中设置该 .js 文件:

myScript.js文件 //外部js文件中不能有script标签,直接编写JavaScript脚本代码即可 
function fun1(){ 
	alert("hello JavaScript"); 
}
<!DOCTYPE html> 
    <html>
    	<head>
    		<script src="js/myScript.js"/> 
        </head> 
        <body>
       		 <script>
       			 fun1();//调用脚本中的内容s 
        	</script> 
        </body> 
</html> 
外部文件引入一次即可,在head或者body中都可以。

PS:外部脚本不能包含 script标签

1.4 JavaScript显示数据
  • 使用window.alert()弹出框
  • 使用document.write()将内容写入到html文档
  • 使用console.log写入到浏览器控制台

2、JavaScript基本语法

JavaScript注释与java的单行和多行注释相同。

单行注释以 // 开头。

多行注释以 /* 开始,以 */ 结尾。

3、JavaScript基本语法

JavaScript 是一个脚本语言。它是一个轻量级,但功能强大的编程语言。

JavaScript语法跟Java很相似,但是也有区别。JavaScript是弱语言类型,即有些时候有些错误不影响运行,但是依然推荐按照规范去编写代码,语言弱,程序员不能弱。

3.1 JavaScript变量

声明变量的关键字:var

语法:var 变量名称;

var myCompany; //声明变量 
myCompany='重庆'; //赋值 
var x=5;//声明的同时赋值 
var y=6; 
var z=x+y;//变量也可以存储表达式

变量的命名规则

  • 变量必须以字母开头

  • 变量也能以 $ 和 _ 符号开头

  • 变量名称对大小写敏感(y 和 Y 是不同的变量)

  • 不能使用关键字保留字

变量的命名规范:

  • 见名知意 。例如:breadPirce,userService等,避免无意义的a,b,c等
  • 推荐驼峰命名法,即第一个单词的首字母小写,以后每个单词的首字母大写。例如lastName
3.2 JavaScript的语句

JavaScript 语句向浏览器发出的命令。语句的作用是告诉浏览器该做什么。

JavaScript 是脚本语言,浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执

行前对所有代码进行编译。

JavaScript中也有分支结构和循环结构,语法与java类似,此处就不再深入讲解。细节上的内容等我们

后面使用过的时候再给大家单独指出。

PS:一般一行只写一条语句,每句结尾编写分号结束。

3.3 JavaScript的数据类型
3.3.1字符串string

字符串是存储字符的变量。字符串可以是引号中的任意文本。必须使用单引号或双引号;

var gameName="王者荣耀"; 
var hairstylist='tony';
//PS:注意引号嵌套 
var message1='我的发型师是"tony"老师'; 
var message2="我的发型师是'tony'老师";
3.3.2 数字Number

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:

var breadPrice=15.9; 
var gameLevel=66; 
//极大或极小的数字可以通过科学计数法来书写: 
var myMoney1=666e5; //66600000 
var myMoney2=-666e-5; //-0.00666
3.3.3 布尔Boolean

只能有两个值:true 或 false。

var isUnderstand=true; 
var isSingle=false;
3.3.4 空Null
var email=null;
3.3.6 未定义Undefined

表示变量不含有值。可以通过将变量的值设置为 null 来清空变量。

共有4中情况会出现undefifined的值(有些知识语法还未学习,但是不影响理解,大家根据学过的java知

识对比理解)

1、变量声明且没有赋值;

var obj; 
alert(obj);//obj值为undefined

2、获取对象中不存在的属性时;

var obj; 
alert(obj.name);//报错信息: "Uncaught TypeError: Cannot read property 'name' of undefined"

3、函数需要实参,但是调用时没有传值,形参是undefifined;

4、函数调用没有返回值或者return后没有数据,接收函数返回的变量是undefifined。

function printNum(num){ 
    alert(num); 
}
var result=printNum();//调用函数未传递参数,执行函数的时候num的值是undefined
alert(result);//result的值也是undefined,因为printNum()没有返回值
3.4 JavaScript中的运算符

算数运算符:+ - * / % 、 ++ 、 –

赋值运算符:= 、 +=、 -= 、*= 、 /= 、 %=

字符串的连接符:+

逻辑运算符: && || !

条件运算符:?:

比较运算符: == 、!= 、 > 、<、 >= 、 <=

以上运算符的运算规则与 java 一样,在这里不再赘述。接下来强调两个新的比较运算符:

比较运算描述
===绝对等于(值和类型均相等)
!==不绝对等于(值和类型有一个不相等,或两个都不相等)
var x=5; 
var res=(x===5); // true 
res=(x==='5');// false 
res=(x!==5); // false 
res=(x!=='5');// true

4、JavaScript对象

4.1 JavaScript的String对象
var str="我喜欢看海贼王,最喜欢的海贼是\'大剑豪\'索隆"; 
//注意:字符串中出现的\'是一个字符,转义为一个单引号 
console.log(str); 
//获取字符串的长度:,切记:所有转移符号的长度都算一个,即\'长度为1 
console.log("字符串的长度="+str.length);//22
4.2 JavaScript的Array对象

Array 对象用于在变量中存储多个值,也就是数组。

4.2.1 声明数组
//声明数组的方式1:使用Array对象,与java语言中的ArrayList相似
var names=new Array();
names[0]="啊吗粽";
names[1]="老谭胡说";
names[2]="徐大虾";
names[3]="云流";
//获取数组的长度:数组名称.length 
for(var i=0;i<names.length;i++){
    document.write(names[i]+"<br/>");
}
//声明数组的方式2:
var cars=["大众", "保时捷" , "法拉利"];
for(var i=0;i<cars.length;i++){
    document.write(cars[i]+"<br/>");
}
//声明数组的方式3:
var classes=new Array( "1班","2班","3班");
for(var i=0;i<classes.1ength;i++){
    document.write(classes[i]+"<br/>");
}
4.2.2 数组长度length属性

PS:大家需要注意的length是数组的属性,不是方法,所以调用的时候没有括号。

var nameArr=["宝玉","黛玉","湘云"]; 
var len=nameArr.length; //获取数组的长度
4.3 JavaScript的Date对象
4.3.1 创建日期对象
var date1 = new Date(); 
var date2 = new Date(milliseconds); 
var date3 = new Date(dateString); 
var date4 = new Date(year, month, day, hours, minutes, seconds, milliseconds);
4.3.2 日期对象的常用方法
方法描述
getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)。
getFullYear()从 Date 对象以四位数字返回年份。
getHours()返回 Date 对象的小时 (0 ~ 23)。
getMinutes()返回 Date 对象的分钟 (0 ~ 59)。
getMonth()从 Date 对象返回月份 (0 ~ 11)。
getSeconds()返回 Date 对象的秒数 (0 ~ 59)
setDate()设置 Date 对象中月的某一天 (1 ~ 31)
setFullYear()设置 Date 对象中的年份(四位数字)
setHours()设置 Date 对象中的小时 (0 ~ 23)
setMinutes()设置 Date 对象中的分钟 (0 ~ 59)
setSeconds()设置 Date 对象中的秒钟 (0 ~ 59)
setMonth()设置 Date 对象中月份 (0 ~ 11)。
4.4 JavaScript的Math对象

与java中的Math相似,跟数学相关的内容都这里。有很多方法属性与java中的也类似。

4.4.1 Math常用方法
var pi=Math.PI;//返回圆周率
4.4.2 Math常用方法
var num=Math.random();// 返回 0 ~ 1 之间的随机数。 
var max=Math.max(12,34,-90,9);//返回 n个数值中的最大值。 
var min=Math.min(12,34,-90,9);//返回 n个数值中的最小值

5、 JavaScript的函数

5.1 JavaScript的常用全局函数
5.1.1 isNaN(param)

用于检查其参数是否是非数字值。

是数值的返回false,不是数值返回true。

console.log(isNaN(666));//false 
console.log(isNaN(1+2));//false 
console.log(isNaN("hello"));//true
5.1.2 parseFloat(String)

可解析一个字符串,并返回一个浮点数。该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。

console.log(parseFloat("66"));//66 
console.log(parseFloat("199.99"));//199.99 
console.log(parseFloat("1024 2048 4096"));//1024 
console.log(parseFloat("128"));//128 
console.log(parseFloat("10年"));//10 
console.log(parseFloat("今天是8号"));//NaN
  • 字符串中只返回第一个数字。
  • 开头和结尾的空格是允许的。
  • 如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
5.1.3 parseInt(string,radix)

可解析一个字符串,并返回一个整数。

参数描述
string必需。要被解析的字符串。
radix可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。

当忽略参数 radix , JavaScript 默认数字的基数如下:

  • 如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  • 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八制或十六进制的数字。
  • 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
5.2 JavaScript的自定义函数

与java中学过的方法类似。

5.2.1 自定义函数语法

使用function关键字定义函数。

function 自定义函数名称(参数列表){ 
    //函数体 
}
5.2.2 自定义函数实例

注意:1、函数的形参直接写参数名称,不需要声明类型,即不需要写var.

​ 2、函数的返回取决于函数体中是否有return关键字。

//函数:类似java语言中的方法
//function声明函数的关键字
//声明无参无返回值的函数
function print(){
    document.write( "helloworld--function");
}
//声明有参数有返回值的函数
/*
*参数:直接写从参数名称即可,不能有类型var
*返回值: 有return关键字, 而且return后面有内容,则认为函数有返回值,否则没有返回值;
*/
function getSum(a,b){
    var he=a+b;
    return he;
}
//调用函数--无参无返回值,直接函数名称()调用
var res=getSum(1,2.3);
document.write("<br/>结果是"+res+"<br/>");
5.3 JavaScript的匿名函数
<script>
    //匿名函数
    var fun=function(){
        document.write("helloWorld--fu-------------<br/>");
    }
	var fun2=function(a,b){
        document.write( a+"------fun2--------"+b+"<br/>");
    }
    var fun3=function(a,b){
        document.write(a+"------fun3--------"+b+"<br/>");
        return a+b;
    }
    //调用匿名函数
    fun();
	fun2(1,3);
	var result=fun3(10,10);
	alert(result);

6、JavaScript变量的作用域

6.1 局部JavaScript变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问。

在不同的函数中可以声明名称相同变量,因为局部变量出该函数就失效了。

6.2 全局JavaScript变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

<script>
    var userId=1001;//全局变量:整个script脚本中都可用,要注意先后顺序
	function printMessage() {
        var userName = "李白";//局部变量:只在当前函数中生效
        document.write(userId);//使用全局变量的时候,保证使用(方法被调用)之前定义并赋值
        document.write(userName) ;/ /使用局部变量
    }
PrintMessage();
</script>
<script>
    function printMessage2(){
    var userName2 = "李白2";
    document.write(userId);//这里也可以使用userId
    // document .write (userName1);//错误:调用不到printMessage函数中的局部变量
    documen.write(userName2); //正确:可以使用自己函数中的局部变量
	}
</script>
6.3 变量的生命周期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。全局变量会在页面关闭后被删除。

7、JavaScript自定义对象

对象也是一个变量,但对象可以包含多个值(多个变量)。

7.1 定义对象

对象中可以有属性,也可以有方法

//定义对象
var student={name : "宝玉",age :18, height:178.5};
//定义JavaScript 对象可以跨越多行,空格跟换行不是必须的:
var student2={
    name: "张大仙",
    age:30,
    height:180,
    work:function(){
    	alert("千局乐不疲,唯我张大仙")
	}
};
7.2 对象的属性

可以说 “JavaScript 对象是变量的容器”。

但是,我们通常认为 “JavaScript 对象是键值对的容器”。

键值对通常写法为 name : value (键与值以冒号分割)。

键值对在 JavaScript 对象通常称为 对象属性。

7.3 访问对象的属性
//访问对象的属性:
//方式1:
var n=student.name ;
//方式2:
var n2=student [ "name"] ;
alert(n+"--"+n2) ;
7.4 访问对象的方法
var student2={
    name: "张大仙",
    age:30,
    height:180,
    work:function(){
    	alert("千局乐不疲,唯我张大仙")
	}
//访问对象的方法
student2.work(); 

TypeScript总结

由于本人在课下自学过程中,并未对 TypeScript深入了解,故以下内容都是关于 TypeScript一些简单知识以及老师网站(qige.io)中的内容。

1、TypeScript介绍

TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。

2、TypeScript的优缺点

2.1 TypeScript优点
  • 它提供了可选静态类型的优点。在这里,Typescript提供了可以添加到变量、函数、属性等的类型。
  • Typescript能够编译出一个能在所有浏览器上运行的JavaScript版本。
  • 它使用基于类的面向对象编程。
  • TypeScript总是在编译时强调错误,而JavaScript在运行时指出错误。
2.2 TypeScript的缺点
  • 如果我们在浏览器中运行TypeScript应用程序,需要一个编译步骤将TypeScript转换成JavaScript。
  • 要使用任何第三方库,必须使用定义文件。并不是所有第三方库都有可用的定义文件。
  • TypeScript不支持抽象类。

3、TypeScript的基础用法

3.1 数据类型定义

不使用var(类似于C语言中全部变量的概念,但在弱语言中我们多次声明一个变量,不一定会报错,所以就会引出一些莫名其妙的错误),使用let(类似于局部变量的概念)或const(定义一个常量,赋值后不会变化)申明变量,并加上类型说明,且作用域为块级即以{}为界。

let lang: string = 'TypeScript';//如果省略类型说明,TS也可进行自动推断
lang = 1010;//error! 如果需要可以使用联合类型:let lang: number | string = 'TS';
let age: number = 89;
let age = 64;//error!
const pi: number = 3.14159;//pi以后不可改变,类似常量
pi = 3.14;//error!
3.2 解构数组

将对象、数组中的元素拆分到指定变量中,以方便使用。

//解构数组
let input = [12];
let [first, second] = input;//注意使用[]
console.log(first); // 1
console.log(second); // 2       
3.3 函数定义

TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用。

3.3.1 完整函数
//命名函数,有完整的参数和返回类型。可以不用,TS将自动进行类型推断但推荐使用!
//养成自己正确且完整使用的习惯
function add(x: number, y: number): number {
  return x + y;
}
//匿名函数
let myAdd = function(x: number, y: number): number { return x + y; };
console.log(myAdd(1, '2'));//error
console.log(myAdd(1));//error
console.log(typeof myAdd(1, 2));//number 
3.3.2 可选参数函数
//可选参数,必须放在必要参数后
function asd(firstName: string, lastName?: string) {
  if(lastName) {
      return `Hello ${firstName} ${lastName}!`;
  }
  return `Hello ${firstName}!`;
}
console.log(asd('zby'));
console.log(asd('zby', 'qqc'));
console.log(asd('zby', 'qqc', 'Yuan'));//参数数量超过
3.3.3 默认参数函数
//默认参数,不必在必要参数后
function asd(firstName: string, lastName = 'Yuan') {
  return firstName+" "+lastName;
}
console.log(asd('zby'));			//返回"zby Yuan"
console.log(asd('zby', 'qqc'));		//返回"zby qqc"
console.log(asd('zby', 'qqc', 'Yuan'));//参数数量超过       
3.3.4 剩余参数

剩余参数,会被当做个数不限的可选参数。可以一个都没有,也可以有任意个

function asd(firstName: string, ...lastName: string[]) {
  return firstName+" "+lastName.join(" ");
}
console.log(asd('a','s','d'));
console.log(greeting('a'));      
3.3.5 箭头函数

简化函数定义、解决this问题(不用绑定this)。

//两个及以上的参数,函数体代码多于一行,则必须用{}包裹,且显式给出return
let add = (n1: number, n2: number) => {
  let sum = n1 + n2;
  return sum;
}
console.log(add(1, 2));         
3.4 类

类是属性(有些什么)和函数(能干什么)的集合,是生成对象(Object)或类实例的模板。

//类的定义和使用
class MyInfo { //class是关键字,类名默认全部大写首字母
  name: string; //属性
  weather: string; //属性
  
  constructor(name: string, weather: string){ //构造函数,一般用于初始化。如果没有,TS会自动生成一个,以备用new创建类实例时调用。
    this.name = name;
    this.weather = weather;
  }
  printInfo(): void { //其它函数,无返回值
    console.log(`Hello, ${this.name}.`);
    console.log(`Today is ${this.weather}.`);
  }
}

let myData = new MyInfo('yxl', 'sunny'); //使用new关键字生成对象,即该类的实例
myData.printInfo();          

JavaScript与TypeScript总结

我觉得在学习javaScript于TypeScript的过程中,死记硬背概念知识点是远远不够的,要多加联系多加尝试。只有在练习的过程中,才能使学到的知识内化于心。碰到不会的地方记得查看官方文档。共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值