【知识整理】javascript基础语法总结(3)——函数
2016-09-21 14:28
776 查看
一.函数:封装一项任务的步骤清单的代码段,再起一个任务名
1)函数是一个引用类型的对象
2)对象:内存中同时存储多个值得空间
3)声明函数法1:
4)调用函数:函数名([参数值列表]);(函数只有被调用时,才会执行; 函数可被反复调用)
5)参数变量:专门接收方法执行所必须的数据的变量(参数让方法变的更灵活,调用时,按照参数定义的个数和顺序传入)
6)内存中函数生命周期:
(1)定义时:将函数直接封装在一个对象中保存——函数对象;(函数名,其实是指向函数对象的一个变量)
(2)调用时:在执行环境中增加一个当前函数的执行环境对象,才会逐行读取并执行函数的内容
(3)调用后:函数的执行环境弹出,活动对象被释放。(活动对象:专门保存函数的局部变量的存储空间)
7)作用域:一个变量的可用范围。(本质其实是一个存储多个变量的对象)
(1)全局作用域:专门保存全局变量的对象
(2)函数作用域:专门保存函数内部的局部变量的对象
(3)局部变量(只在函数调用时的函数内部才可使用):1. 参数变量(形参) 2. 在函数内使用var声明的变量
(4)全局变量:在任何时候,任何位置都可被访问
8)返回值:函数调用的执行结果(不是所有函数都有,根据需要设置有无返回值)
(1)定义返回值:在函数定义结尾:return 返回值;(返回值只能返回一个值,不能返回多个)
(2)获得返回值:调用时:var a=函数名(xxx);(变量a中保存了函数的返回值);
9)按值传递:两变量间赋值或向函数中传递参数时,都是将原变量中的值复制一个副本给对方,修改一方,另一方不受影响
例1:
10)函数声明提前:在正式执行程序前,都会先预读所有var声明的变量和function声明的函数,集中到当前作用域的顶部集中声明,而赋值留在原地二.全局函数:ES标准中规定的,浏览器厂商已经实现的,不需要任何对象即可直接调用的函数
1)全局函数列表:
2)编码解码:
(1)encodeURI: 对包含多字节字符的url字符串编码为单字节字符组成(只能编码解码多字节,保留字无法编码)
(2)decodeURI: 将encodeURI编码后的字符串,解码为原文
(3)eval: 专门执行字符串格式(string格式)的js语句,还可计算字符串格式的表达式的值。三.分支结构:根据不同的条件,执行不同的代码
1)一个条件,一件事,满足条件就做,不满足就不做
(1)如果操作简单,利用短路:条件&&(操作1,操作2,...);操作可以用逗号分开写多个。
(2)如果操作复杂:if( 条件 ) { 操作代码段 }(如果满足条件,就执行操作)
2)一个条件,两件事,满足条件做第一件,不满足做另一件
(1) 如果操作简单:三目:(条件,三元)运算。操作1:操作2;
(2) 如果操作复杂:
(1) 如果操作简单:三目:
例:
2、条件可以是任意关系运算或逻辑运算,只要返回true和false的函数或表达式,都可当条件用
1)函数是一个引用类型的对象
2)对象:内存中同时存储多个值得空间
3)声明函数法1:
function 任务名([参数变量列表]){ 步骤清单代码段 [return 返回值] }//整体(函数名+函数定义)提前声明函数法2:
var 函数名=function(参数){函数体;return 返回值}//函数定义不会被提前,仅函数名提前
4)调用函数:函数名([参数值列表]);(函数只有被调用时,才会执行; 函数可被反复调用)
5)参数变量:专门接收方法执行所必须的数据的变量(参数让方法变的更灵活,调用时,按照参数定义的个数和顺序传入)
6)内存中函数生命周期:
(1)定义时:将函数直接封装在一个对象中保存——函数对象;(函数名,其实是指向函数对象的一个变量)
(2)调用时:在执行环境中增加一个当前函数的执行环境对象,才会逐行读取并执行函数的内容
(3)调用后:函数的执行环境弹出,活动对象被释放。(活动对象:专门保存函数的局部变量的存储空间)
7)作用域:一个变量的可用范围。(本质其实是一个存储多个变量的对象)
(1)全局作用域:专门保存全局变量的对象
(2)函数作用域:专门保存函数内部的局部变量的对象
(3)局部变量(只在函数调用时的函数内部才可使用):1. 参数变量(形参) 2. 在函数内使用var声明的变量
(4)全局变量:在任何时候,任何位置都可被访问
8)返回值:函数调用的执行结果(不是所有函数都有,根据需要设置有无返回值)
(1)定义返回值:在函数定义结尾:return 返回值;(返回值只能返回一个值,不能返回多个)
(2)获得返回值:调用时:var a=函数名(xxx);(变量a中保存了函数的返回值);
9)按值传递:两变量间赋值或向函数中传递参数时,都是将原变量中的值复制一个副本给对方,修改一方,另一方不受影响
例1:
var a=10;//按值传递:原始类型的值 var b=a;//变量中的值复制给对方 a++; console.log(b);//10例2:
var my=["包","包","包","包","包"];//按值传递:引用类型的对象 var lp=my;//按值传递,将变量中的地址复制给对方; lp[0]=""; console.log(String(my));// ",包,包,包,包" my[1]=""; console.log(String(lp));//",,包,包,包"
10)函数声明提前:在正式执行程序前,都会先预读所有var声明的变量和function声明的函数,集中到当前作用域的顶部集中声明,而赋值留在原地二.全局函数:ES标准中规定的,浏览器厂商已经实现的,不需要任何对象即可直接调用的函数
1)全局函数列表:
2)编码解码:
(1)encodeURI: 对包含多字节字符的url字符串编码为单字节字符组成(只能编码解码多字节,保留字无法编码)
(2)decodeURI: 将encodeURI编码后的字符串,解码为原文
(3)eval: 专门执行字符串格式(string格式)的js语句,还可计算字符串格式的表达式的值。三.分支结构:根据不同的条件,执行不同的代码
1)一个条件,一件事,满足条件就做,不满足就不做
(1)如果操作简单,利用短路:条件&&(操作1,操作2,...);操作可以用逗号分开写多个。
(2)如果操作复杂:if( 条件 ) { 操作代码段 }(如果满足条件,就执行操作)
2)一个条件,两件事,满足条件做第一件,不满足做另一件
(1) 如果操作简单:三目:(条件,三元)运算。操作1:操作2;
(2) 如果操作复杂:
if(条件){ 满足才执行的代码 }else{ 不满足才执行的代码 }3)多个条件,多件事,多选一执行,可一件都不执行
(1) 如果操作简单:三目:
条件1?操作1: 条件2?操作2: ...?... : 默认操作; //不能省略
例:
function getLevel(score){ alert(score<0||score>100?"无效成绩": score>=90?"A": score>=80?"B": score>=60?"C": "D") }(2)如果操作复杂
if(条件1){ 操作1; }else if(条件2){ 操作2; }else if(...){ ...; }else{ 以上条件都不满足,则执行的默认操作 }注:1、最后的else可省略,一旦所有条件都不满足,则什么都不做。
2、条件可以是任意关系运算或逻辑运算,只要返回true和false的函数或表达式,都可当条件用
相关文章推荐
- 【知识整理】javascript基础语法总结(7)——Math
- 【知识整理】javascript基础语法总结(8)——Date
- 【知识整理】javascript基础语法总结(5)——数组
- 【知识整理】javascript基础语法总结(1)——变量和数据类型
- 【知识整理】javascript基础语法总结(9)——错误处理
- 【知识整理】javascript基础语法总结(6)——正则表达式
- 【知识整理】javascript基础语法总结(2)——数据类型转换和运算符
- 【知识整理】javascript基础语法总结(4)——条件和循环语句
- 【知识整理】javascript基础语法总结(5)——字符串API
- Javascript基础知识盲点总结之函数
- sql数据库基础知识整理,常用函数及常用语法
- Javascript基础知识盲点总结——函数
- 栋栋晓10:Javascript学习总结:基础知识2(语句,函数,)
- 栋栋晓09:Javascript学习总结:基础知识1(语法、关键字和保留字、变量、数据类型、操作符)
- C#高级语法基础知识总结3——数组
- java基础知识记录--基本语法 (摘自张孝祥整理java面试题)
- javascript基础知识总结
- C#高级语法基础知识总结6——字符串&集合
- java基础知识记录--html javascript ajax(摘自张孝祥整理java面试题)
- java基础知识记录--基本语法 (摘自张孝祥整理java面试题)