函数
1.函数的创建
两种方式
语法1:
声明定义一个函数
function 函数名称(){
需要执行的代码段
}
2.赋值式创建
即将函数赋值给一个变量进行函数的声明
语法2:
var 变量名称 = function(){
需要执行的代码段
}
函数的调用方式
1.声明式的调用:函数的名称()
2.赋值式的调用:变量的名称()
总结:
1.创建函数的时候需要用关键字function声明函数
2.函数的名称最好用语义化命名
3.注意写法
声明函数 function 和函数名称之间需要加空格
参数
经典案例之-素数
分析:
1.常见的素数
2.判断一个数是不是素数,再循环判断一个范围的的数是不是素数
3.起始的值可以设置为2 用当前的值%比当前小1的数
比如现在有一个数是9
9%8==0
9%7==0
前端经典的编程思想,假设法
// 定义一个数 var flag = true // 表示你当前这个数就是素数 var num = 15 // 14 13 12 11 10 9 8 7 6 5 4 3 2 for(var i=num-1;i>=2;i--){ // 判断当前这个数除余每次小1的数有没有余数 if(num%i==0){ flag = false // 如果求余的时候==0是成立的 表示这个数不是素数 alert('不是素数') /* 带入计算的时候 第一次运算 9%8==0 不成立 走的是else 弹出是素数 第二次运算 9%7==0 不成立 走的是else 弹出是素数 第三次运算 9%6==0 不成立 走的是else 弹出是素数 第四次运算 9%5==0 不成立 走的是else 弹出是素数 第五次运算 9%4==0 不成立 走的是else 弹出是素数 第六次运算 9%3==0 成立 走的是if 弹出不是素数 第七次运算 9%2==0 不成立 走的是else 弹出是素数 */ break; } // 循环体内必须要等每次计算结果才可以弹窗 所以在里面是得不出结果的 } // else不要了 拿出来 // 前端编程思想:假设法 if(flag==true){ alert('是素数') } </script>
解法
<script> // 求100~200之间的所有素数 for (var j = 100; j <= 200; j++) { var flag = true // 就是素数 for (var i = j - 1; i >= 2; i--) { if (j % i == 0) { flag = false document.write(j + "不是素数" + "<br>") break; } } if (flag == true) { document.write(j + "是素数" + "<br>") } } </script>
通过行为执行函数
即将函数绑定到事件上进行执行调用
例如
<body> <!-- js事件中的鼠标单击事件 --> <button οnclick="fn()">点击按钮计算两个数的和</button> </body> </html> <script> /* 需求1:现在有一个按钮,点击这个按钮会弹出一句话 需求2:点击按钮 执行函数 函数中弹出一句话 */ var fn = function(){ var a = Number(prompt('请输入第一个数')) var b = Number(prompt('请输入第二个数')) alert(a+b) } </script>
函数参数的概念
在函数创建以及调用的时候 后面都是有一个小括号,作用就是设置参数
函数参数的作用
参数可以传递函数需要的值:作用是封装函数 重复利用
函数中有两个参数
1.形参:形式上的参数 在创建函数的时候 函数名称后面的小括号就是形参
2.实参:实际上的参数 在调用函数的时候 函数名称后面小括号里的就是实参
注意
1.无论是形参还是实参 有多个参数的时候之间需要逗号隔开
2.在形参位置设置变量就表示在函数内部定义了变量但没有赋值
3.在调用函数的时候传入参数就相当于给形参中的变量做了赋值操作
形参和实参的应用:原则上数据类型和数量应该都是一样的
1.如果实参比形参多的时候:默认是从左边到右侧进行接收 多的参数对函数内部的代码没有影响
2.如果实参比形参少的时候:默认是从左侧到右侧进行接收 少的参数就会显示undefined
伪数组、类数组
当实参比形参多的时候 在函数内部默认有一个类数组 arguments 内置对象
知道了函数内部的内置对象的作用
1.可以通过内置对象获取传递进来的参数的个数 argument.length
2.可以通过内置对象获取传递进来参数的每个值 arguments.[下标]
函数的返回值
函数的返回值:函数运行得到一个结果
函数中的作用域:
函数是一个封闭的空间 函数内部的变量或者是计算的结果只能在函数内部使用
函数返回值的使用
1.函数内部的变量或者结果只能在函数内部使用
2.如果函数内部的变量或者结果提供给函数外面去使用 就需要一个关键字
return 变量/结果
3.在函数外面需要接收当前函数内部返回出来的结果值
4.函数内部使用了return可以将值返回去但是在外面接收不到 需要一个新的变量接收
5.return不仅仅可以返回值 还可以中断程序
注意:
1.undefined: 表示变量未赋值 定义了但没有具体赋值
2.not defined:表示未定义 变量无中生有
预解析的概念
预解析/变量提升的解释
1.将变量的定义和函数的创建提到代码的最前面
2.其他大妈按照代码的书写顺序再去执行
程序报错之后,就不会继续往下去执行了
fn() var fn = function(){ console.log('你好2222') // undefined、你好2222 } /* 预解析过程 var fn // 变量 fn() // 使用函数调用去执行变量 会报错 not a function fn = function(){ console.log('你好2222') } */
预解析的经典案例
<script> fun() var fn = function () { console.log('我是 fn 函数') } function fun() { console.log('我是 fun 函数') } fn() fn = 100 fn() /* 预解析过程 var fn function fun() { console.log('我是 fun 函数') // 我是 fun 函数 } fun() fn = function(){ console.log('我是 fn 函数') // 我是 fn 函数 } fn() fn =100 fn() // 报错 */ </script>