函数(方法)
语法:
function 函数名(){
代码块;
return;
}
function 关键字 定义函数 类似于 var 定义变量一样
函数名 作用类似于 变量名 命名规范 跟变量名一样
() 函数的参数配置列表,如果有多个参数 以,隔开
{} 函数的代码块
return 定义返回值 或者 结束函数 只在函数中有效;
命名函数 定义完毕后 不会直接执行
必须得依靠 函数的调用 来执行
函数的调用 必须带括号
`fn1();`
在函数 被 事件绑定的时候 可以不写名字(匿名函数)
由事件 来触发函数
box.onclick = function () {
}
事件触发函数 第二种写法
行间属性触发
这种写法 可以触发 命名函数
行间属性触发时 函数没有括号
<div id="box" onclick="fn1"></div>
匿名函数 第二种写法
var fn2 = function(){
console.log("这是第二个函数");
}
fn2();
函数的参数
函数在定义的时候 括号里面写的参数 叫形参
function fn1(a) {
console.log("参数" + a);
}
函数在调用的是 括号里面写的参数 叫实参
fn1(2);
函数的参数 可以有多个 多个参数以,隔开
多个参数时 形参 和 实参的位置顺序 必须保持一致
function fn2(a, b) {
console.log(a + b);
}
fn2(1, 2);
形参默认值
function fn3(a = 0) {
console.log(a);
}
fn3();
fn3(9);
多个参数时 必须将有默认值的参数 写在最后面
function fn4(b, c, a = 1) {
console.log(a, b, c);
}
fn4("b", "c");
return
只在函数中生效
1.返回值
2.结束一个函数
return 下面的代码 都不会继续执行
函数的运行 以return 为结束
作用域 变量起作用的区域
- 全局作用域
函数外边的区域 就是全局作用域
在全局作用域中声明的变量 叫全局变量
全局变量 可以在程序的任何一个位置被访问 - 局部作用域
函数内部的区域 就是局部作用域
在局部作用域中声明的变量 叫局部变量
局部变量 只能在当前作用域下 被访问
无法被上层作用域访问
var 声明变量的特点- 变量可以重复声明;(尽量不要重复)
- 允许 先访问后声明
变量的提升:浏览器在编译的时候 会先访问一遍 所有使用 var 和 function 声明的变量 或者 方法; 但是 只访问 不会进行任何的赋值操作; 相当于 提前开辟一个储存空间,但是这个储存空间暂时没用存放任何东西,直到下面使用时(赋值)才会往里面放入东西。 - 当全局变量 和 局部变量 命名重复时 遵循就近原则
递归
在函数内部 返回函数自身的调用 这种操作 叫递归
日期对象
通过关键字 new 来创建一个日期对象
var date = new Date();
-
获取年份
var year = date.getFullYear();
-
获取月份
月份获取 比实际的月份小1var month = date.getMonth() + 1;
-
获取日期
var day = date.getDate();
-
获取星期
var week = date.getDay();
-
获取 时
var hour = date.getHours();
-
获取 分
var minute = date.getMinutes();
-
获取 秒
var second = date.getSeconds();
-
获取 毫秒
var ms = date.getMilliseconds();
-
获取时间戳
从 1970年 1月1日0时0分0秒 至今 所有的毫秒数var time = date.getTime();
this 关键字
this 只在函数中存在 永远指向函数的调用者
box.onclick = function(){
this.style.backgroundColor = 'black';
//指向标签 box
console.log(this);
}
function fn1() {
//指向 window
console.log(this);
}
arduments 可变参数 类数组(伪数组)
arguments 只存在于函数中 关键字
伪数组
可以在不写形参的时候 获取到所有的实参 并存到arguments数组中
function fn2() {
console.log(arguments);
}