函数(function)
是一段预定义好的,可以被反复使用的代码块,其中包含多条可执行语句。
使用关键字function声明一个函数
命名规则与变量一致,都要符合标识符命名规则
函数的声明与调用
<script> //使用函数向页面输出两数和 var a=7,b=7; function sum(){ var add=a+b; document.write(add) } sum(); </script>函数的返回值
<script> //使用函数返回值向页面输出两数和 var a=7,b=7; function sum(){ add=a+b; return add; } var c=sum(); console.log(c) </script>函数的参数
函数的参数,是函数执行过程中,用于接收实际数据的变量,只不过不需要使用var声明。
函数通过return关键字来返回函数执行的结果
<script> //含参数的两数和 function add(n1,n2){ return n1+n2; } var a=parseInt(prompt("请输入第一个数:"));//注意,如果不强制转换,输入的则是string类型的。 var b=parseInt(prompt("请输入第二个数:")); c=add(a,b); alert("两数和是"+c) </script> <script> //比较三个数的大小 function getMax(n1,n2,n3){ var nmax; //逻辑短路,或者用条件运算表达式 (n1>n2)&&(n1>n3)&&(nmax=n1); (n2>n1)&&(n2>n3)&&(nmax=n2); (n3>n1)&&(n3>n2)&&(nmax=n3); return nmax; } var a=parseInt(prompt("请输入第一个数:")); var b=parseInt(prompt("请输入第二个数:")); var c=parseInt(prompt("请输入第三个数:")); alert("三个数中最大的是:"+getMax(a,b,c)) </script>作用域
作用域就是变量与函数的可访问范围,它控制着变量与函数的可见性和生命周期。
分为:
全局作用域(window),变量或函数一经定义,在代码中任何地方都能访问
函数作用域,函数作用域中定义的函数或变量,只在当前函数内可访问----也称作局部作用域
<script> var a=10;//全局变量 function qq(){ var b=10;//局部变量 a=20;//全局变量,更改全局变量a的值 c=30;//全局变量,非严格模式下,函数中未使用var声明的变量,会被自动创建为全局变量 } </script>按值传递
按值传递是指两个变量间赋值,或将变量作为参数传入函数时,其实只是将原变量中的值复制一个副本给对方。
JS中为函数传递参数时,都是按值传递的。
如果传递的是原始类型数据,则在函数内修改参数变量的值,不会影响外部的原变量。
提前声明
JS程序在正式执行前,会将所有var声明的变量和function声明的函数提前到所在作用域的顶部,集中创建。但是,会将赋值留在原地。
全局函数
全局函数是指ECMAScript标准中预定义好的,可以直接使用的函数。例如:
Boolean(); isNaN(); Number(); String(); parseFloat(); parseInt();
eval(); 用于执行字符串类型的js语句(即,会把一个字符串当成js语句执行),相当于一个小型的js解析器
<script> var str = prompt("请输入一个算术运算表达式,例如:1+2"); //var result=eval(str); console.log(str+"的结果为:"+eval(str)); </script>编码:将url中的多字节字符编码为单字节字符
解码:反向将单字节字符解码为多字节字符
encodeURl(); URI进行编码。//编码
encodeURlComponent(); 对URl的有效组件进行编码。//编码,可编码特殊符号,比如 : /。
decodeURl(); 对已编码的URI进行解码。//对url进行解码
decodeURlComponent(); 对URl的一个已编码的组件进行解码 。//解码,可解码特殊符号,比如 : /。