手记

js语法

1,数据类型转化:
强制转化:

number类型转化:
Number();应用的场景:我们必须让用户输入内容为数字;
parseInt()&&parseFloat();
应用场景是:如果我们去获取价格的数字部分,可以使用;

string类型转化:
x.toString();
boolean类型转化:
unfinide,null,false如果在数字类型转化变成:0;
true:1;
0--》boolean//false;

在计算机中:
程序实际就是利用不同的条件来判断输出不同的结果;
那么条件就是运用不同的数据进行各种运算:
数学运算,关系运算,结合逻辑运算;

 数据都有那些:原始数据类型 和 引用数据类型:
 
 原始:string,number,boolean,null,unfinide;
 
 引用数据类型:object,function,array;
 
 所有的运算:最终的目的都是要去获取一个true或者false的结果;

逻辑控制语句:
1,条件判断:
if(条件是否成立){
执行条件成立的内容
}
条件判断语句中圆括号内容:我们称为:表达式;
表达式必须有计算结果:要么是true,要么是false
花括号的内容我们称为:程序语句;这个内容主要是负责执行程序;可以是一个过程,也可以算出一个结果;

if:如果(条件成立)
{执行条件成立的程序}
else否则{执行条件不成立的程序内容};
else if(排除if条件之后的再次判断){}
这种条件控制语句:属于先判断条件,再输出结果;.

switch(结果){
	case1 条件判断:如果成立并执行程序;
	case2 条件判断:如果成立并执行程序;
	case3 条件判断:如果成立并执行程序;
	case4 条件判断:如果成立并执行程序;

}

switch条件控制:因为所有的程序执行都在一个花括号内完成,所以有时候会出现一个条件满足;
后续程序依次执行的现象;
为了解决这个问题,我们在每个程序执行之间设置一个跳出设置:break;
break的作用是前面的程序执行完毕到此彻底退出,后续不再执行;
所有的计算机程序在一般情况下,都只执行一次;
但是在很多时候,我们是需要程序反复执行的;
为了实现程序的反复执行:我们需要学习一种新的控制语句:循环控制;

循环语句:分为三部分:
	1,循环变量;如果我们的变量出现规律增加或者减少,这个变量叫做循环变量;
	2,循环条件;在一定的条件范围内,我们循环内容持续执行;
	3,循环体;需要重复执行的程序;

do{}
while()
	do while()这种循环是属于先执行一次程序,然后判断条件是否继续执行下去;
do while和while都属于无上限的条件循环;一般我们适用于不知道循环次数的未知循环;

在实际的生活和工作里,我们经常会遇到已知的循环,我们基本都知道循环的次数;

for循环;
for(var i=0;i<100;i++){
循环体;
}
for循环一般 用于做所有的遍历输出,排序,自动创建;
控制语句和循环语句都是程序执行的内容;

函数:方法;
声明符号:function
(参数区域)
{方法的程序执行内容;}

方法的作用:
1,可以将一个重复使用程序代码封装起来;后续可以重复利用;
2,通过对于方法的不同数据传递,实现结果的不同输出;

方法的基本语法:
function name(参数){方法的内容}

function的作用:相当于变量中的声明var;计算机看到function的时候会在内存的栈中开辟一个固定空间存放function的名字name以及参数();
在堆内存中开辟一个可以伸缩的空间,存放花括号内的代码段;

方法的使用:使用方法的名称以及后面参数圆括号
function buy(){};
buy()//这种方式可以实现方法的调用;

函数封装了程序,我们有时候需要这个程序可以重复的使用,适应不同的环境;
例如求和运算:
function add(){
var a=10;
var b=11;
var c=a+b;

}
如果按照以上写法,我们就无法实现任何的两个数字相加;
所以我们要想办法实现a,b两个变量的值能够随意的更改;
这个就涉及到函数的传值;
函数的方法名后面的圆括号被称为:参数列表;这里面我们可以设置几个变量名称;
function add(a,b){
a+b;花括号内的a就是形参a,b就是形参b;
}
圆括号内的a,b被称为函数的形参;因为形参不代表任何具体的内容
当我们调用函数的时候
add(2,3),此时调用函数的参数列表内所传内容,我们称为:实参;实参就是一个实际的数据,
这个数据将根据顺序分别传递给形参;
函数的值传递:

function add(a,n){
var c=a+n;//函数内的变量
	console.log ( c );
}
add(2,3)//函数外的输出无法直接使用函数内的变量;
//要想成功实现函数内部变量的输出,1,直接在函数内输出,然后外部调用函数就可以;
//第一种方法的缺陷是无法实现将该函数的数据直接给另一个函数使用;
function fin(x,y){
	
console.log(x*add(3,4)-y)
//x=12
//add(3,4)-->在fin函数内表现结果为NaN
//主要原因是add函数的结果没有办法直接被fin函数使用;
//主要原因是add函数的结果没有办法直接被fin函数使用;
}
fin(12,15)

函数:
我们又称为方法;
他基本语法是有三部分内容组成:
函数声明function 函数名称(函数的参数列表){函数的程序内容};

函数的主要作用:
分割代码包装称为整体;起到一个容器的效果

function的主要作用是:声明一个函数类似var的意义;

参数列表主要作用:给函数内部传递参数数据的;

参数分为:
1,形参:一般直接写在函数声明后面的参数列表内,他不代表具体的数据;相当于我们的变量名称;
2,实参,一般写在调用函数时,在参数列表所写的具体数据,主要给形参变量赋值;
通过实参往形参赋值的过程,我们称为:传参;
函数的调用:直接使用函数名称();即可实现调用;
函数内的值传递;
函数起到分割包裹作用,函数内部的数据无法直接传递到函数外;
所以我们使用return后面跟着我们想要获得的数据,实现函数内数据的导出;

实例代码:

function add(a,n){
	var c=a+n;//函数内的变量
	return c;
}
//函数外的输出无法直接使用函数内的变量;
//要想成功实现函数内部变量的输出,1,直接在函数内输出,然后外部调用函数就可以;
//第一种方法的缺陷是无法实现将该函数的数据直接给另一个函数使用;
function fin(x,y){
	return x*add(2,3)-y
}
console.log(fin(12,13));

重点记忆:for循环的使用,利用双重for循环实现三角形的输出,不同函数之间的值传递;

函数的作用域:
如果我们把一个网页看做一个全局范围,那么一个函数就看做一个局部范围;
在函数之外创建的变量,我们称为:全局变量。影响范围可以涉及到整个页面;
在函数内部创建的变量:我们称为:局部变量;作用的范围只能在函数的内部;
函数内部局部变量,我们是无法在外部直接使用变量名,只能通过调用函数的方式来使用该变量的值;

函数的变量总共有三种:
1,全局变量;
2,局部变量;
3,参数变量(实际就是参数列表的形参;)

如果同时有三种相同名称的变量,那么传值的优先级别是:
局部>参数>全局;
全局变量会影响到整个网页下的函数内部。如果该函数里面没有同名变量的话;
因为变量可以命名同名变量;所以在一些特殊的情况下,我们遇到全局变量影响了内部数值的输出。这种现象;我们称为全局污染
为了解决这个问题,我们讲函数外边嵌套一个函数,形成双重函数的状态;
这种双重函数的形态叫做闭包:

闭包的表现特点:
1.函数内嵌套函数;
2,外围函数创建一个局部变量,相对内部函数来说,这个局部变量是内部函数的全局变量;
3,如果需要使用内部函数的值,我们需要使用return返回整个内部函数予以导出;

function b(){
var n=5;
return function a(){
	return n++;
}}
//要想获取n++的值我们需要调用函数a();
//但是应为函数a是一个内部函数,我们无法直接使用;

//此时我们需要讲函数a通过return方式加以返回;
console.log(b())//此时等价于b()==function a(){return n++}
var c=b();
console.log(c());//5
console.log(c());//6
console.log(c());//7
console.log(c());//8

匿名函数:就没有名字的函数:
一般使用次数基本都是写完直接使用,用完彻底不用;
function ( c ) {return c}//这就是匿名函数的形态
匿名函数的调用:
function ( c ) {return c}()//即可实现调用;
(function (){return c})//这也是一种调用方法;

函数的声明提前:
因为js是一种解释型脚本语言;浏览器在执行js程序的时候会首先解释全部的js的代码;
在解释过程中,优先读取变量和函数的声明和函数的值;
所以我们可以这么说:变量的声明可以提前,值不提前;
函数的声明和值都提前;

实例代码:	(面试实例)
console.log(b)//undefined,原因是变量b的名字提前,但是值不提前
console.log(cc())//10  函数cc的声明function和函数的返回值均提前;
console.log(aa())//undefined 因为aa函数返回的结果是变量b,但是变量只是声明和名字提前,值不提前,所以
var b=10;
function cc(){
	return 10;
}
function aa(){
	return b
}

数组
array:作用是:存储一系列数据的空间。
数组的表现形态:[“元素1”,“元素2”,。。。。];
数组的创建:1,直接变量创建:
var arr=[];
2,构造创建:
var arr=new Array();
一般常用方法:我们使用使用直接量创建的;
var a=[];

数组分类:
1,索引数组;
索引数组每个元素的顺序都有一个下标号:
[“中国”,“美国”];
那么中国这个元素有一个我们看不见的下标号:0
美国下标为:1;
下标号的起始数字默认为:0;
索引数组,有一个属性:数组的长度;length;
对于在程序中表示某一个对象的属性:程序的表示方式:obj.属性名;这样就可以实现对属性值的获取;
var arr=[“北京”,“上海”,“深圳”,“广州”];
arr.length就可以获取数组中总长度。判断数组中的元素个数;
最后一个元素下标:arr.length-1;
获取元素:
如果我们想获取数组中的某一个元素;使用方法:
arr[元素的下标号];
添加元素:
arr[下标号]=“元素的值”
//创建一个数组,给这个空数组插入1-100的数;
一个数组内包含直接就是元素本身,这样的数组我们称为一维数组;
实际上,数组内部的元素也可以是一个单独的数组;
数组内包含了若干子数组:我们称为多维数组;
多维数组的遍历输出:需要使用多重for循环;
外围循环寻找每一个子数组。内环循环直接输出子数组元素;

	var city=[["朝阳","海淀","大兴"],["浦东","闸北","陆家嘴"],["和平","塘沽","滨海新区"]]
	for(var i=0;i<city.length;i++){
		//此时可以获取每个省份下关于城市的子数组;
		for(var j=0;j<city[i].length;j++){
			console.log(city[i][j]);
		}
	}

数组中的去重复:
如果需要去重复,我们首先要将数组中的任意两个元素对比,不相等的取出组成一个新的没有重复的数组;
但是要想成功实现任意对比;
我们需要对数组进行排序:

排序的方法:
1:冒泡排序;
使用双重for循环实现数组的从小到大 的排序;

var arr=[1,2,2,1,5,4,3,2,5,5,5,5,6,7,8,11,11,10,25,25];
//数组去重复的基本思路:1,前后对比所有的元素,如果不相等,就取出前一个元素,形成新数组;
//首先对数组arr进行数组排序:
/*var n=null;
for(var j=0;j<arr.length;j++){
for(var i=0;i<arr.length;i++){
	if(arr[i]>arr[j]){
		n=arr[j];//先将小的那个数赋值给n;
		arr[j]=arr[i];
		arr[i]=n;
	}
}
}*/

可是实际双重for循环在内存中占据资源太多,所以我们尽量使用一个数组自带的排序方法:sort()排序;
1,sort();
原理:利用所有的数据在nuicode编码表中的序号进行大小对比;因为该表没有存储超过9以上的数字;
所以直接使用无法实现9以上的数字的排序;所以为了实现对任意数字的排序,我们需要引入一个自定义方法;
arr=[];
arr.sort(function (a,b){return a-b});
这样就可以实现对数组的排序;

2,尾部插入元素;push();
push();作用是在数组的尾部自动追加一个或者多个元素,并且能够自动往后延续;
arr.push(brr[i]);
这句话可以解释为:我们给arr这个数组的尾部插入一个元素,这个元素是brr数组的某一个;
arr是要插入元素的数组对象;
push(这里写入的是要放进去的内容;)

3, pop();在尾部删除一个元素;
arr.pop();//删除数组中最后一个元素,并且将删除后的数组重新返回;
console.log(arr);

4,shift();在头部插入一个元素;
arr.shift(value);

5.在数组的头部删除一个元素:
arr.unshift();//删除数组中的第一个元素,并且将删除后的数组返回;

6.将数组的内容一次性提取出来,形成一个字符串。
arr=[2017,12,21];
join();
arr.join("-");以短横线的方式将元素连起来,并且形成一个string数据输出;

7,将两个小的数组,拼接在一起:
concat();
如果我们将a,b两个数组拼接在一起:
a.concat(b);
此时会得到一个新的数组,这个数组包含a,b中原来元素;

8,数组的截取:slice(start,end);
start开始截取的元素下标号;
end:结束的 元素下标:但是end这个下标不会被截取到;
arr.slice(0,6);

9,批量的添加修改或者删除;splice(index,how many,item,item)
arr.splice(0,6)
splice()中的第二参数是指需要获取多少个?如果我们需要配获取10个,那就写10;他和slice()的区别是。slice()后面的第二个参数是表示我们截取数组结束位置的下标号 ;

2,关联数组:
索引数组的下标:是隐藏的,但是呈现规律性存在从0开始计算;
但是关联数组:下标直接出现在数组里,与元素的内容形成一个键值对形态存在;
var arr=[“name”:“tom”,“age”:21];
这样的数组我们称为:关联数组:hash数组;
关联数组的创建:
var arr=[];
arr[“name”]=“tom”;
arr[“age”]=21;
arr[“city”]=“北京”;
console.log(arr);
关联数组的最大特点:
1,没有数组长度。
2,数组的下标称为了元素的键名:关联数组不存在重复的元素;

0人推荐
随时随地看视频
慕课网APP