学习记录-------JavaScript01

本文详细介绍了JavaScript的基础知识,包括arguments对象用于获取传入函数的参数值,匿名函数和命名函数的使用方式,特别是函数表达式的概念。此外,还深入探讨了函数的自调用、作为参数和返回值的使用,以及作用域的原理,包括全局变量、局部变量、隐式全局变量和作用域链。最后,文章讲解了预解析的概念,如何影响变量和函数的声明及执行顺序。
摘要由CSDN通过智能技术生成

arguments 此对象可以获取传入的每个参数的值
---------伪数组

匿名函数
命名函数

========================================================
命名函数------通过函数名调用

匿名函数—不能直接调用

通过函数表达式----》把一个函数给一个变量
var 变量=匿名函数
var f1 = function() {}

如果是函数表达式,那么此时前面的变量中存储的就是一个函数,而这个变量就相当于是一个函数,就可以直接加小括号调用了
f1();

函数声明了同一个函数两次—(重名)后面的函数会把前面的函数覆盖
无论函数的调用写在哪 都只会显示后面函数声明的内容

函数表达式-与赋值相同
后面赋的值会覆盖前面的,但是前面赋值,前面调用就是前面的值后面赋值覆盖后,调用就是后面的值

函数的自调用,没有名字,调用—声明同时,直接调用 一次性的
(function()){console.log();})();

函数也是一种数据类型 function

函数可以作为参数使用
function f1(fn) {
fn();
}
function f2() { console.log(“haha”)}
f1(f2);
函数作为参数使用不用加()

如果一个函数作为参数使用,那么我们说这个参数(函数)可以叫回调函数

函数可以作为返回值使用
function f1() {
console.log(“111”);
return function () {
console.log(“222”);
}
}
var ff=f1();----->函数进行调用,ff就作为一个函数接受返回值为匿名函数的函数
上面这种方式可以输出f1的函数输出的值,但是不能输出f1的返回值(匿名函数)中输出的内容
此时ff中存的是"111"以及匿名函数的代码
ff();---->要调用匿名函数,需要使用函数调用的方法

==================================================
作用域
全局变量:声明的变量是使用var声明的,那么这个变量就是全局变量,全局变可以在页面的任何位置使用
全局变量如果页面不关闭,那么就不会释放,就会占空间,消耗内存
目前除了在函数中定义的变量,其他都是全局变量

局部变量:在函数的内部定义的变量,外面不能使用

隐式全局变量:声明的变量没有用var
var num1=10; ---->全局变量
num2 =20;------>隐式全局变量
delete num1;---->不能删除
delete num2;---->可以删除
delete 变量名; 不能删除全局变量 可以删除隐式全局变量

全局作用域:全局变量的使用范围
局部作用域:局部变量的适用范围
块级作用域:一对大括号为一块 ,在这块区域定义的变量,只能在这块中使用
但是js中块级内定义的在块级外也能使用 所以js中没有块级作用域(函数除外)

作用域链
在函数中调用script便签后为0级作用域,一级一级往上找3—>2—>1—>0没找到报错

var num = 10;-----------------------------------0级作用域
|
function f1(){------------------------------------1级作用域
var num = 20;
function f2(){---------------------------------2级作用域
var num = 30;
function f3(){------------------------------3级作用域
var num = 40;
console.log(num);
}
}
}

==========================================
预解析
就是在解析代码之前做的事
预解析会把变量的声明提前 赋值不会提前
函数调用会直接把函数声明提前

f1();
var num = 0;
function f1() {
console.log(num);
}
函数的执行结果是undefined

预解析中,变量的提升,只会在当前的作用域中提升,提前到当前的作用域的最上面
函数的变量只会提前到函数的作用域的最前面,不会出去

快速识别预解析的结果
var a=25;
function abc() {
alert(a);
var a =10;
}

输出结果undefinder 预解析优提升函数内部

console.log(a);-------->函数a的代码s
var a;
function a() {
console.log(‘aaaa’);
}
console.log(a);-------->函数a的代码
变量和函数重名了 函数吧变量覆盖了 所以输出a的代码
a=1;
console.log(a);-------->1

f1();
console.log©; -------->9
console.log(b); -------->9
console.log(a); -------->报错
function f1() {
var a = b = c = 9;
console.log(a);-------->9
console.log(b);-------->9
console.log©;-------->9
}

第一个a报错的原因
预解析时
function f1() {
var a = b = c = 9;
console.log(a);-------->9
console.log(b);-------->9
console.log©;-------->9
}
f1();
console.log©; -------->9
console.log(b); -------->9
console.log(a); -------->报错
|
|
|
|
function f1() {
var a; 函数局部变量
a=9;
b=9; 隐式全局变量
c=9; 隐式全局变量
console.log(a);-------->9
console.log(b);-------->9
console.log©;-------->9
}
f1();
console.log©; -------->9
console.log(b); -------->9
console.log(a); -------->报错

f1();------->报错 f1 is not a fuction
var f1=function () {
console.log(a);
var a = 10;
};
报错原因:
预解析过程
var f1;
f1();
f1=function () {
console.log(a);
var a = 10;
};

================赋值多个变量
var sum= 0,average= 0,evensum= 0,oddsum= 0,result= 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值