JavaScript学习笔记整理(含练习)...未完

JavaScript学习笔记

大学期间学了1年的JavaScript知识,那时候只是止步于课堂练习和书本上面代码和网页所需的练习,自己并没有深入去钻研JavaScript的学习。而之后又恰逢自己主要学Java所以大多数经历也没放在那上面。所以我这忘事佬的性子没过多久就忘记的差不多了。现在只能看懂,但让自己动手的话,就感觉自己懵了。所以这段时间准备先学学基础知识,然后再练习一下各种事件,来完成一个简单网页的编码。

JavaScript快速入门

JavaScript代码编写方法

1.1JavaScript代码编写在网页的标签中:

<html>
<head>
  <script>
    alert('Hello, world'); //弹框显示:Hello, world
  </script>
</head>
<body>
  ...
</body>
</html>

JavaScript代码可以嵌套在网页的任何地方,但我们一般是吧JavaScript的代码放在中,而由包含的代码也就是我们常说的JavaScript的代码。

1.2 JavaScript代码放在一个单独的.js文件中

代码放在.js文件中的话,需要在HTML中通过引入这个文件。src中填入该js文件的地址。地址有相对地址和绝对地址。绝对地址就是指带有盘符的,一般情况都是引用相对地址。

把js代码写入单独文件中有利于我们对代码进行维护。而且多个页面可以引用js,就可以避免重复的代码。

JavaScript基本语法

注:JavaScript严格区分大小写。

2.1 赋值语句

var x=2;

2.2 判断语句

if语句

if(2>1){
	x=1;
	y=2;
	z=3;
	}

注:{…}还可以嵌套,形成层级结构

if(){…}else{…}语句:

var age=20;
if (age>=18)
	alert('成年人');
else
	alert('未成年');

多行条件判断

var age=20;
if (age>=18){
	alert('成年人');
}else if(age>=6){
	alert('青年');	
}else
	alert('你还是个小孩子');

2.3循环

for循环
结构for(;

var x = 0;
var i;
for (i=1; i<=100; i++) {
    x = x + i;
}
x; 

i=1;这是初始条件,将变量i设置为1.如果前面有为变量设值的话,这里可以直接写i。
i<=100;这是判断是否进行循环的条件。满足就循环,不满足则退出。
i++;这是指一次循环之后,i进行加1 。

for…in

var student={
name:'小明',
age:'20';
city:'长沙'
};
for(var key in student){
console.log(key)//'小明','20','长沙'
}

while

var b=8;
 while(b>5){
  b--;
 }
 b;//4

do…while

var n=1;
do{
n=n+1;
}while(n<5);
n;//5

2.4 注释

//这是单行注释

/*从这里开始是块注释
一直是注释
注释*/

2.5 数据类型

Number

符合Number类型的如下:

123;//整数123
0.145;//浮点数0.145
1.222e3;//科学计数法表示1.222*1000
-99;//负数
NaN;//当无法计算结果时用NaN表示
Infinity;//表示无限大,就是当数值超过了Number所能表示的对大值

Number可以直接做四则运算。

字符串

就是以单引号或者双引号括起来的文本,都可以叫做字符串。

'端午快乐'
"你好"

布尔值

一个布尔值只有true和false两种值。

null与undefined

null表示的是为空的值。与0和’ '不同。
undefined表示未定义

数组

数组是一组按顺序排列的集合,集合的每个值称为元素。数组用[]表示,元素之间用,分隔。
注:JavaScript数组可以爆款任意数据类型。
如:

[1,4,5,'hello',1.23,null.true]

创建数组有两种方法,一种是直接用[],还有一种是通过Array()函数实现。一般我们直接用第一种方法创建。

var a=new Array(1,2,3) //创建数组[1,2,3],并赋值给变量a

获取数组长度可以通过.length;

a.length;//6

访问数组可以直接通过下标来访问,小标从0开始,到字符长度-1

a[1];//1

indexOf可以搜索指定元素的位置

var arr=[1,2,3,'w',5]
arr.indexOf(1);//元素1的索引为0
arr.indexOf('3');//元素'3'没有找到,返回-1。

slice
截取数组的部分元素,然后返回一个新的。

var arr=['小明','小江','小沙','小刘','小李'];
arr.slice(0,3);//从索引0开始,到索引3结束,但不包括索引3.
arr.slice(3);//从索引3开始到结束。

push
向数组末尾添加若干元素。

var a=[1,3,5]
a.push('t');
a;//[1,3,5,'t']

pop
删除数组的最后一个元素

var a=[1,3,5]
a.pop();
a;//[3,5]

unshift
向数组的头部添加若干元素

var a=[1,3,5]
a.unshift(6,7);
a;//[6,7,1,3,5]

shift
删除数组头部的若干元素

var a=[1,3,5]
a.shift();
a;//[3,5]

sort
对数组里面的元素进行排序

var a=[1,7,3,5]
a.sort();
a;//[1,3,5,7]

reverse()
对数组里面的元素进行反转。就是最后一位变成第一位。如下:

var a=[1,3,5]
a.reverse();
a;//[5,3,1]

splice
它可以从指定的索引开始删除若干元素或者添加若干元素。

var a=[1,3,5]
a.splice(1,2,'你好',99);//从索性1开始,删除2位元素,再添加2个元素
a;//[1,'你好',99]

concat
把当前的数组与另一个数组进行连接,返回新的数组。

var a=[1,3,5]
var adda=a.concat(2,'你好',99);
adda;//[1,3,5,2,'你好',99]
a;//[1,3,5]

join
将当前数组按照指定的方式进行连接。

var a=[1,3,5]
a.join('*');
a;//[1*3*5]

多维数组

var a=[1,[1,2,3],[4,5,6],'a']

Map
是一组键值对的结构,具有极快的查找速度。

var m = new Map(); // 空Map
m.set('amei', 67); // 添加新的key-value
m.set('ali', 69);
m.has('amei'); // 是否存在key 'amei': true
m.get('amei'); // 67
m.delete('amei'); // 删除key 'amei'
m.get('amei'); // undefined

set
是一组key的集合,但不存储value。在set中没有重复的的key。

var s1 = new Set(); // 空Set
var s2 = new Set([1, 2,2, 3]); // 含1, 2, 3
s2.add(3,4,5);//add(key)方法可以添加元素到Set
s2.delete(4,5);//通过delete(key)方法可以删除元素
s2;set{1,2,3}

重复元素在set集合中自动过滤.

iterable
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。Array、Map和Set都属于iterable类型。具有iterable类型的集合可以通过新的for … of循环来遍历。

for in 与for of的区别:

for … in循环将把name包括在内,但Array的length属性却不包括在内。

var a = ['A', 'B', 'C'];
a.name = 'D';
for (var x in a) {
    console.log(x); // '0', '1', '2', 'name'
}

for … of循环则完全修复了这些问题,它只循环集合本身的元素:

var a = ['A', 'B', 'C'];
a.name = 'D';
for (var x in a) {
    console.log(x); // 'A', 'B', 'C'
}

forEach
对数组的每个元素执行一次提供的函数。
语法:

[ ].forEach(function(value,index,array){
 
    //code something
    
  });

forEach方法中的function回调有三个参数:
第一个参数是遍历的数组内容,
第二个参数是对应的数组索引,
第三个参数是数组本身

reduce
reduce()必须接收两个参数,把结果继续和序列的下一个元素做累积计算。
比方说Array求和,用reduce实现方法:

var a=[1,2,3,4,5];
a.reduce(function(x,y){
return x+y;
});//15

filter
它用于把Array的某些元素过滤掉

var a=[1,3,4,5,8,9]
var r=a.filter(function(x){
return x%2!==0;
});
r;
//[1,3,5,9]

sort()
sort()方法就是用于排序的,但因为Array的sort()方法默认把所有元素先转换为String再排序,所以可能和我们预期的结果不太一样。

every
every()方法可以判断数组的所有元素是否满足测试条件

find
find()方法用于查找符合条件的第一个元素,如果找到了,返回这个元素,否则,返回undefined

findIndex
findIndex()和find()类似,也是查找符合条件的第一个元素,不同之处在于findIndex()会返回这个元素的索引,如果没有找到,返回-1

对象
这里的对象不是我们现实生活中的对象。JavaScript对象是一组键值对组成的无序集合。

var student={
name='小明',
age='18',
class='1618',
teacher='李老师'
};

JavaScript对象的键都是字符串类型,值可以是任意数据类型。

获取对象的属性可以使用对象变量.属性名的方式。

student.name;//'小明'

如果我们给对象绑定一个函数,就可以做更多的事情。

var student={
name='小明',
class='1618',
birth=2000,
age:function(){
     var y=new.Date().getFullYear();
     return y-this.birth;
}
};
student.age;//function.student.age()
student.age();//今年调用是20

this
下面这个链接可以很好理解js中this的指向:
https://www.cnblogs.com/pssp/p/5216085.html

this是一个特殊变量,它始终指向当前对象。

apply()和call()
apply():它接收两个参数,第一个参数就是需要绑定的this变量,第二个参数是Array,表示函数本身的参数。
call():与apply类似,只是apply()需要把参数打包成Array再传入,而call()把参数按顺序传入。

变量

变量与我们以前数学方程式中讲到的变量一样。变量命名:大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字。定义变量用var语句。如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量。

变量作用域
局部变量与全局变量。JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性。内部函数可以访问外部函数定义的变量,但方法体内的局部方法只能供方法内使用。

常量
由于var和let申明的是变量,如果要申明一个常量,在ES6之前是不行的,我们通常用全部大写的变量来表示“这是一个常量,不要修改它的值”

var PI=3.14;

解构赋值
可以同时对一组变量进行赋值

'use strict';

// 如果浏览器支持解构赋值就不会报错:
var [x, y, z] = ['A', 'B', 'C'];

strict模式

强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

函数

定义函数
第一种方法:

function opp(x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

function指出这是一个函数定义;
opp是函数的名称;
(x)括号内列出函数的参数,多个参数以,分隔;
{ … }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined。
第二种方法:

var opp= function (x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
};

function (x) { … }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量opp,所以,通过变量opp就可以调用该函数。

调用函数

argument

rest参数

高阶函数

闭包
箭头函数
生成器generator

标准对象

Date
RegExp
JSON

你可能感兴趣的:(JavaScript学习笔记整理(含练习)...未完)