1.函数的两种调用方式:声明式和赋值式
//函数的两种调用方式
//声明式
function fn5() {
console.log("我是fn5函数");
}
//赋值式
var fn6 = function() { //等号右边是匿名函数,然后赋值给了fn6,所以fn6可以调用它
console.log("我是fn6函数");
}
fn5();
fn6();
2.return的两个作用
//return:无条件退出当前方法/当前函数,并返回数据
//作用:1.返回数据;2.终止程序的执行
//终止城市的执行例子:
var fn7 = function() {
console.log("下雨不出门!");
return;
console.log("天转晴了!"); //return后不输出此句
}
fn7();
3.函数形参的默认值
//函数参数的默认值:给形参设置默认值,调用时可以不用给其传参
var fn8 = function(name, age = 19, sex = "女") {
console.log("我叫" + name, ",今年" + age + "岁,性别" + sex);
}
fn8("susan");
fn8("Tom", 20, "男");
4.argument
//argument:函数里没写形参却传入了参数,可以通过argument拿到参数
//原理:通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数
function fn9() {
// 没有写形参,但是传了实参,用arguments接收
console.log(arguments[0], arguments[1]) //输出1 2
// return arguments[0] + arguments[1];
}
fn9(1, 2, 3, 4, 5, 6); //输出了1 2
// console.log(fn9(11, 22)) //33
5.系统函数
//系统函数
//字符串->数字
console.log(Number('11') + 44); //55
console.log(parseInt('22') + 38); //60
//判断是否为数字,false是数字,true是非数字
console.log(isNaN('wreoiugar')); //true,即是一个非数字
console.log(isNaN(parseInt('33'))); //false,即是一个数字
console.log(isNaN(Number('33'))); //false,即是一个数字
//应该注意的是console.log(isNaN('33')); 是false,即认为'33'是一个数字
console.log(isNaN('33')); //false
console.log(isNaN(33)); //false
6.全局变量和局部变量
//全局&局部
// alert(t);//报错(不弹出)
// alert('ok');
// t = 2;//t未声明,执行报错
// 和
// alert(t);//弹出undefined
// alert('ok');
// var t = 2;//执行到alert(t)时t未被赋值(预编译时声明了t),输出undefined
// 的区别:
//函数的调用放在函数的声明之上
// a();
// function a() {}
// var a = function() {}; //没弹出ok
// alert('ok');
//原因:a不是函数,执行报错。预编译的时候,声明了变量a = undefined;
//执行到a()时,a还等于undefined,不是函数,所以执行a()会报错。
7.局部把变量覆盖全局变量(就进原则)
var num = 11;
function fn() {
var num = 22;
console.log(num); //22
}
fn();
console.log(num); //11
8.变量的提升
//变量的提升
/*
1.什么是变量的提升?
变量或者函数的声明会在物理层移动到作用域的最前面
2.变量提升的实现原理是什么?
js的变量和函数声明会在编译阶段放入内存
3.变量提升的目的是什么?
为了在正式声明一个变量或函数之前就可以使用它
4.了解变量的提升是为了?
知道编译和执行以及变量的提升,就是为了了解js内部执行的顺序,规避一些常见的错误
*/
//1.
// console.log(a); //undefined
// var a = 123;
//2.
a = 123;
var a;
console.log(a); //123
//例2代码经过编译后变成
// var a;//被提升到当前作用域的最前面
// a = 123;//留在原地等待执行
// console.log(a);
/*编译和执行的区别:
编译分成边一部分和链接部分,编译部分是吧代码转换成二进制语言,连接部分是吧二进制语言组合成可执行文件
即编译是把代码转换成可执行了文件的过程
执行就是把编译出来的文件放到系统中运行的过程,成为程序的运行
比喻:编译就是做饭,运行就是吃饭*/
//*注意函数表达式(匿名函数)不会被提升
//匿名函数的提升例子
// fn3(); //报错,fn3 is not a function
// var fn3 = function() {}
/*
执行过程:
var fn;
fn();
fn=function(){}
*/
本文详细介绍了JavaScript中的函数调用方式,包括声明式和赋值式,并讲解了return的作用,如返回数据和终止函数执行。此外,还讨论了函数参数的默认值、argument对象的使用以及系统内置函数的应用。同时,文章阐述了全局变量和局部变量的区别,以及局部变量如何覆盖全局变量。最后,重点解析了JavaScript中的变量提升现象及其原理。

被折叠的 条评论
为什么被折叠?



