1.函数:
封装一个专门任务的步骤清单的代码段
起一个任务名
when:只要定义一个专门的任务,都要封装一个函数;
使用函数:声明 定义 调用;
如何定义一个函数:
function 函数名([参数列表]){
函数体:代码段
return 返回值
}
如何调用函数:var 返回值=函数名(参数列表);或 函数名();***********
一次定义,反复使用,代码重用;
一次修改,处处生效;
-- 函数的参数:接受“传入函数内”的数据(变量);
when:如果一个函数必须某些数据才能正常执行;
参数可让函数变得更灵活
定义: function 函数名(变量1,变量2,变量3...){};*********
调用: 函数名(变量1,变量2,变量3...);
-- 返回值:方法调用后返回的结果;
function 函数名([参数列表]){
函数体:代码段
return 要返回的数据;
}
return后不加数据,单独使用,表示退出函数执行;
函数仅负责返回值,不保存值;获取返回值:var 返回值=函数名(参数列表);document.write(返回值); **********
********** 函数是引用类型的对象;函数名是指向函数对象的变量;(函数名存在window,代码段存在window外的一个地址;)
函数的定义和调用过程:
1.window中创建函数名变量;
2.window外创建了函数定义的对象-->封装函数的定义
函数名变量中保存了指向函数对象的地址
3.调用时,创建局部变量:2种;
4.调用过程中,如果局部有,就不用全局的;
如果局部没有,才会用全局的;
如果全局也没有,会报错;
5.调用结束后,释放所有全局变量!
2.变量作用域:
一个变量的可用范围;
-- 全局作用域:一个变量可以在程序的任何位置被访问。
-- 函数作用域:一个变量仅能在函数调用时,内部被访问。
全局变量:定义在全局作用域中的变量;2种;
1.直接在任何函数外定义的变量;
全局变量都属于window--全局对象;
2.无论在任何位置,为没有var声明过的变量赋值;自动创建同名全局变量;
局部变量:定义在函数作用域中的变量;2种;
1.函数定义内部声明的变量;
2.参数变量也是局部变量;
1.声明提前:***************
在程序执行前或函数被调用前;
将var声明的变量和function声明的函数
提前到“当前作用域”的顶部集中创建;
仅声明提前,赋值留在原地;***************
2.按值传递:
将实参变量的值复制一份副本给方法的形参变量;
将 全局变量 “当参数”传给函数时,是复制了 全局变量 的值,函数内的计算不会改变 全局变量;***********
如果函数没有参数,用了 全局变量 计算,就会“改变全局变量的值”。
(demo4);
3.全局函数:ES标准中,已经定义好的,开发者直接调用的函数;
- parseInt(str)
- paeseFloat(str)
- isNaN(num)
- isFinite :判断一个数字是否有限;
无穷大:Infinity; 4/0;
- 编码,解码 (demo5)
编码:将url中的非法字符,改为合法字符的
- encodeURIComponent();
/s?word=%E5%BC%AO
张
utf-8格式编码
在utf-8一个汉字占3字节;
url中不允许出现多字节字符!(乱码)
用utf-8格式编码,将url中多字节字符,转为单字节;
url中不允许参数值中出现保留字:如:/
解码:将url中对已编码的标符解码,恢复原文;
- decodeURIComponent();
- eavl:计算并执行以字符串表示的表达式的值:如:算算式,解释并执行代码;(demo5)
4.分支结构:
程序结构分3大类:
1.顺序:程序默认由上向下执行;
2.分支:根据条件判断的结果,有选择的执行不同代码;3种;(demo6)
-- if 结构:1件事 满足条件就执行,否则就不执行;
语法:if(条件){
满足条件才执行的代码;
}
-- if...else... 结构:2件事 满足条件就执行if中的代码段,不满足条件就执行else中的代码段;
语法:if(条件){
满足条件才执行的代码;
}else{
不满足条件就执行else中的代码段;
}
-- else if 结构:多件事,根据条件, 多选一执行;
语法:if(条件1){
满足条件1才执行的代码;
}else if(条件2){
满足条件2才执行的代码;
}...else{
之前条件都不满足就执行else中的代码段;
}
只要一个条件满足,执行完就退出,后面的不执行;*************
分支结构 VS 三目/短路 ****************** (demo7)
如果只是返回值 -->三目/短路
如果操作复杂 -->分支结构
3.循环:程序可以反复执行同一代码段,到达临界时退出;
需求:
- Input
- Process
- Output
分支结构:
1.一个条件,一件事满足就做,不忙足不作:短路、if结构
Demo:
Var a=80,b=90;
a<b&&(a+=b,b=a-b,a-=b);//a=90,b=80,
2.一个条件两件事,二选一:三目、if else、||
3.一个条件多件事 多选一: 三目、switch case(条件全等情况下)
4.操作复杂,且条件包含不等:if elseif
用最短的代码做更多的事情;
面试题:
function Human(){
return Human; //构造函数结尾return一个对象
} ||
var boy=new Human();//new不在创建对象,等效于Human()
var man=Human();
console.log(boy===man);
//true