js day4函数(下)
程序员文章站
2024-01-25 19:48:46
...
//day4
//argument
//定义一个函数,如果不知道用户是否传入了参数,或者说不知道用户传入了几个参数,没办法计算,但是如果在函数中知道了参数的个数,也知道了,每个参数的值,可以
//定义
// function f1 () {
// // 获取的是函数在调用的时候,传入了几个参数
// console.log(arguments.length);
// }
// f1 (10,20,30,40); //调用
// var sum = 0;
// function f1 () {
// for (var i = 0;i < arguments.length;i++) {
// sum += arguments[i];
// }
// return sum;
// }
// var result = f1 (10,20,30,40);
// console.log(result);
// 匿名函数的调用
// var f1 = function () { //变量存储一个函数,相当于函数,就可以调用了
// var sum = 0;
// for (var i = 0;i < 4;i++) {
// sum += arguments[i];
// }
// return sum;
// }; //因为是变量赋值,所以要加分号
// var result = f1 (10,20,30,40);
// console.log(result);
//函数名同名区别
// function f1 () {
// console.log("好猥琐哦");
//}
// f1 ();
// function f1 () {
// console.log("好帅哦");
// }
// f1 ();
//
// //输出两次好帅哦
//
//
// var f2 = function () {
// console.log("好帅哦");
// }
// f2();
// var f2 = function () {
// console.log("真的好帅");
// }
// f2();
// f2();
//输出一次好帅哦 两次真的还帅
// 函数名代表的是函数代码,那么将函数名换成函数代码,调用
// function f1 () {
// console.log("我好开心");
// }
// f1();
// //f1代表函数名----函数代码------用变量存储匿名函数-----不用变量用代码调用
// (function () {
// console.log("我好开心");
// })();
//函数自调用
// (function () {
// console.log("我好开心");
// })();
//声明的同事,直接调用
// var f1=function() {console.log("我好开心")};
// f1();
// 一次性的
// 函数自调用两种方法
//(函数) (实参) 外面2个括号并排的是先计算前面括号的值 然后执行这个返回值 当然返回的肯定要是函数
// (function (n1,n2) {
// console.log(n1+n2);
// })(1,2)
//(函数(实参)) 外面一个括号的 是直接获取返回值里面计算一次
// (function (n1,n2) {
// console.log(n1+n2);
// }(1,2))
//函数的数据类型
// function f1 () {
// console.log ("我是函数");
//}
// console.log(typeof f1);
//函数回调--------------函数作为参数使用了
// function f1 (fn) {
// fn ();
//}
// function f2 (){
// console.log("这也可以");
// }
// f1(f2);
//
// function sayHi (fn,fm){
// fn ();
// fm();
// }
// function sayHe () {
// console.log("老师好帅哦");
// }
// function sayHe () {
// console.log("老师好猥琐哦");
// }
// var say = function () {
// console.log("老师猥琐啊啊")
// }
// var say = function () {
// console.log("刘阳洋好帅啊")
// }
// sayHi(sayHe,say);
//函数作为返回值
// function f1 () {
// console.log("函数f1被调用了")
// return function f2 (){
// console.log("这是一个函数")
// };
// }
// var ff = f1 (); //函数f1倍调用了
// ff (); //------调用 这是一个函数
//作用域
/**
* 全局作用域:全局变量的使用范围
* 局部作用域:局部变量的使用范围
*
* 全局变量:声明的变量是使用var声明的,那么这个变量就是全局变量,可以在任何页面使用,如果页面不关闭,那么就不会释放,就会占空间,消耗内存
* 局部变量:在函数内部定义的变量,外面不能使用,会报错
* function f1 () {
* var num = 10;
* }
* f1 ();
* console.log(num); //报错
*
* 隐式全局变量:
*function f1 () {
* num = 10;
* }
* f1 ();
* console.log(num); //不会报错 ------10
* 块级作用域:一对大括号就可以看做是一块,在这对大括号里面使用的变量,变量只能在这块的范围使用,但是在js中定义的变量也能使用,说明js中没有块级作用域,除了函数以外
{
var num = 10;
console.log(num); //10
}
console.log(num); //10
if (true) {
num = 10;
}
console.log(num); //10
*/
// delete 删除变量(隐式全局变量与全局变量区别)
// var num = 10;
// num1 = 20;
// delete num;
// delete num1;
// console.log(typeof num1); //报错
// console.log(typeof num1); //wndefine
// console.log(typeof num); //Number
//作用域链
// function f1 (){
// num = 10;
// function f2 () {
// num = 20;
// function f3 () {
// num = 30;
// }
// f3 ();
// }
// f2();
// }
// f1();
//预解析:提前解析代码
//把变量/函数的声明提前了,所在作用域上面
// console.log(num); ----undefined
// var num = 10;
// f1(); // 先解析函数和变量的声明,然后函数调用在前,先执行函数内的代码
// console.log(a) // 报错 ,后面代码不执行
// console.log(b)
// console.log(c)
// function f1 () { //结果9 9 9 报错
// var a = b = c = 9; //只有var a,b和c都没有var
// console.log(a)
// console.log(b)
// console.log(c)
// }
// 先解析函数和变量的声明,然后执行输出
// console.log(a) // 报错 ,后面代码不执行
// console.log(b)
// console.log(c)
// function f1 () { //结果 报错
// var a = b = c = 9; //只有var a,b和c都没有var
// console.log(a)
// console.log(b)
// console.log(c)
// }
// f1();
上一篇: js学习day3,数组与函数(上)
下一篇: 成员变量的反射