函数:(方法)封装执行一项 专门任务的步骤 的代码序列。
语法:
声明:
function 方法名(参数列表){
方法体:步骤清单
return 返回值;
}
调用:方法名(参数值列表);
参数:方法内独有的变量。接收传入数据,在方法内处理。
参数让方法变灵活!参数何时被创建?只有方法被调用时才自动创建。
参数仅限方法内部使用!方法外无法访问方法的参数变量。
参数的作用:1. 接收外部传入数据,在方法内处理
2. 规定调用方法的人必须提供哪些参数!
返回值:方法执行完成后,返回的一个数据。
return:本意退出方法!退出同时,可返回数据!
带返回值的方法,使用时,等效于直接使用返回值数据。
何时使用返回值:
根据方法调用者的需要!
如果方法调用者需要明确返回一个结果,就定义返回值!
否则,可以不定义返回值!
有返回值的方法,可以当做1个值用!
何时必须用变量接住?方法的返回值,后续程序可能反复使用!
作用域:一个变量的可用范围!
全局作用域:直接声明在全局作用域中的变量,叫全局变量
window对象:是整个网页的全局作用域对象
局部(函数)作用域:声明在方法内部的变量或方法的参数变量,都叫局部变量。
值传递:将一个变量的值赋值给另一个变量,其实将原变量中的值,复制一份给新变量。js中一切赋值都是值传递!
对未声明的变量赋值:js会自动在全局创建该变量!
函数作用域和变量作用域完全一样:函数作用域在调用方法时创建,方法执行完立刻销毁!
全局函数:ECMAScript定义了标准,由各浏览器厂商已经实现的函数。直接调用!
isNaN(x)
parseInt/Float(x)
encodeURI:将url中的非法字符转为单字节符号——编码
decodeURI:将encodeURI转后的字符串,转换回原文——解码
unicode编码:每个字符2字节
utf-8编码:字母、数字单字节 汉字3字节
encodeURIComponent:既能对多字节非法字符编码,又能对单字节非法字符编码
何时使用?将数据通过url发送时,都要先编码再发送
eval():专门执行字符串格式代码
程序结构:3种--顺序;分支;循环
分支结构:程序运行过程中,可以根据不同的条件,执行不同的任务。
分支结构1:
if...结构: 1件事,要么做,要么不做
if...else...结构: 2件事,二选一执行
elseif结构:多件事,多选一执行。如果前一个条件已经满足,则后续else if不再执行!
分支结构中的条件,可以不是逻辑表达式!如果不是,js会自动转换为Boolean类型:0,null,undefined,NaN,“”,0.0都转为false,其余,都转为true!
分支结构2:switch...case...多条分支,根据条件判断,选择执行
语法:switch(表达式){
case 表达式1://如果表达式的值===表达式1的值
代码段1;
…
case 表达式n:
代码段n;
default: //如果表达式的值和所有case都不相等
默认代码段;
}
运行机制:如果找到与表达式值匹配的case,不但执行当前case下的代码,而且之后所有代码都被触发!
break:退出当前结构.
循环结构:程序反复执行同一套代码段。遇到结束条件,会结束执行。
循环三要素:
1. 循环条件:循环继续执行的条件。
一旦循环条件不满足,循环立刻退出!
2. 循环变量:用于循环条件中做判断的变量
循环变量都会向循环退出的趋势变化(不满足循环条件的趋势)——循环计数器
3. 循环体:每次循环要做的事情
while循环:当满足条件时,就继续循环做...事
语法:
var 循环变量;
while(循环条件){
循环体;
迭代变化循环变量;
}
break: 退出当前结构
while中何时用break:循环条件不满足之前,希望强行退出循环。
do-while循环:先执行一次循环体,再判断是否继续!
如果第一次循环条件不满足,循环体至少可以执行1次!
语法:
var 循环变量;
do{
循环体;
迭代变换循环变量;
}while(循环条件);
*变量声明提前*: “相同作用域内”,var...无论出现在什么位置,解析时,优先提取到js开始位置“声明”!
while vs do while:
如果第一次条件就可能不成,也想执行一次,必须用do while
如果第一次条件一定满足,do while等效于while。
for循环:完全等效于while循环。
适用:循环变量变化规律固定,循环次数已知/固定
语法:
for(声明并初始化循环变量;循环条件;迭代循环变量){
循环体;
}
continue:跳过本轮循环,继续执行下一轮循环。
遇到复杂问题:先用简单办法做最简单的事情。从简单办法中找规律!