JS 函数-对象

tech2025-05-20  2

JS 函数-对象

函数

1、函数命名规则和规范(上一节有)

2、函数覆盖

function fun1() { console.log(1); } fun1(); var fun1 = function() { console.log(2); } fun1(); 1.如果两个函数都是函数声明,后面的会覆盖前面的,函数调用位置不同结果相同; 2.如果两个函数都是函数表达式,后面的会覆盖前面的,函数调用位置不同结果不同。

3、函数的arguements对象

任何一个函数都有一个内置对象:arguements--伪数组

arguements属性

callee--函数本身 name--函数名 length--(函数声明时)形参的个数 length--(函数调用时)实参的个数 ------各个属性都有自己的含义

4、匿名函数-自调用

(function() { console.log("匿名函数"); }) // 匿名函数--加上括号 (function() { console.log("匿名函数"); })(); // 自调用--加上括号

5、函数作为参数传入或传出

函数也是一种数据类型 // 传入 function fun1(x) { x(); } fun1(function() { console.log("函数作为参数传入")}); // 传出 function fun2(x) { return x; } var a = fun2(function() { console.log("函数作为参数传出")}); a();

预解析

预解析指的是JS引擎在对JS代码解释执行之前,会对JS代码进行预解析,会将关键字var 和function开头的语句块提前进行处理。

函数的提升

fun1(); function() { console.log("提升"); } // 因为预解析机制,会变为 function() { console.log("提升"); } fun1(); 注意: 函数声明会提升 函数表达式不会提升 函数提升不会超过作用域

变量的提升

console.log(num1); var num1 = 10; // 会变为 var num1; console.log(num1); num = 10; // 变量只会提升声明

同名覆盖

1、同名函数

同名函数声明,会发生覆盖,且调用位置不同,结果相同。 函数表达式不会预解析,但是同样会同名覆盖,且调用位置不同,结果不同 同名情况下,函数表达式 可以覆盖 函数声明,函数声明 不能覆盖 函数表达式

2、同名函数与变量

按照常规的书写顺序,同名的函数与变量,变量会覆盖函数 预解析,同名的函数与变量,函数会覆盖变量

作用域

全局作用域 1.直接编写在script标签之中的JS代码,都是全局作用域 2.或者放在单独的JS文件中 注意:1.全局作用域在页面加载时创建,关闭时销毁 2.在全局作用域中有一个全局对象window 局部作用域 函数内部,函数执行完,函数内部变量等会销毁。

作用域链

隐式全局变量

1、凡是没有用var定义的变量都是全局变量 2、

对象

JS创建对象的四种方法

// 1.字面量 var person = { name: "严越", age:18, sex: true, eat: function(){console.log("I`m eatting.");}, sleep: function(){console.log("I`m sleeping")} } // 2.new Object() var person1 = new Object(); person.name = "yanyue"; person.age = 24; // 3.工厂模式创建 function createPerson(name, age, sex) { var p1 = new Object(); p1.name = name; p1.age = age; p1.sex = sex; p1.eat = function(){console.log("I`m eatting.");}; p1.sleep = function(){console.log("I`m sleeping.");}; return p1; } var p1 = createPerson("yy", 25, true); console.log(p1); // 4.构造函数 function Person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; this.eat = function(){console.log("I`m eatting.");}; this.sleep = function(){console.log("I`m sleeping.");}; } // 实例化 var p2 = new Person("yylh", 26, true); console.log(p2); p2.eat(); new 1、创建一个新的对象; 2、可以让构造函数中的this指向实例化对象 3、返回一个对象 this 1、构造函数中的this指向实例化对象 2、对象方法中的this指的是当前对象 3、普通函数中的this指的是window

对象遍历

for(x in person){ console.log(person[x]); }
最新回复(0)