JsDay4

一、方法

创建一个对象,向对象中添加属性,对象的属性可以是任何的数据类型,也可以是函数

第一个console.log(obj.SayName)——打印出来是函数体

第二个obj.SayName——打印出来是孙悟空,(调方法)

也可以用function fun(){ 内容 }。用fun();(调函数)

 函数也可以称为对象的属性,如果一个函数作为一个对象的属性来保存,那么我们称为这个函数是这个对象的方法。调用这个函数就说调用这个对象的方法(method)

 输出猪八戒。

枚举对象中的属性,使用for.....in 语句。对象中有几个属性,循环体就会执行几次,每次执行时,都会讲对象中的一个属性的名字赋值给变量

语法:for(var 变量 in 对象)

{

}

二、作用域

作用域值一个变量的作用的范围

在JS中作用域只有俩种:1、全局作用域,直接写在script标签中的js代码,都在全局作用域。全局作用域在页面打开是创建,在页面关闭时销毁,在全局作用域中有一个全局对象window,它代表一个浏览器的窗口,他有浏览器创建我们可以直接使用。在全局作用域中,创建的变量会作为window对象的属性中保存。

变量的声明提前

使用var关键字声明的变量,会在所有的代码执行前被声明但是不会被赋值。但是如果声明变量不适用var关键字,则变量不会被声明提前。

函数的声明提前

使用函数声明形式创建的函数function函数(){} 他会在所有代码的执行前就会被创建。使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用

函数作用域

调用函数时创建函数作用域,函数执行完毕后,函数作用域销毁。每调用一次函数就去创建一个新的函数作用域,他们之间是相互独立的。函数作用域可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。当函数作用域操作作为一个变量时,他就会在自身作用域中去寻找,如果有就直接使用,没有就访问上一级的作用域中寻找,直到找到全局作用域,如果全局作用域亦然没有被找到,就会报错referenceerror。

在函数作用域中也有声明提前的特性,使用var关键字声明的变量,会在函数中所有代码执行前被声明。函数声明也会在函数中所有执行前被执行。

 

输出结果:c = undefined。

因为先找c,执行语句,在被赋值。所以3没被拿到。 

 

posted @ 2023-03-27 13:48  末叶da  阅读(13)  评论(0)    收藏  举报