JavaScript第三篇笔记

文章目录

  • 基本和引用数据类型
  • 对象字面量
  • 函数function
  • 枚举对象中的属性
  • 立刻执行函数
  • 作用域
    • 全局作用域
    • 函数作用域

基本和引用数据类型

1、基本数据类型
String Number Boolean Null Undefined
2、引用数据类型
Object
3、

  • JS中的变量都是保存在栈内存中的,基本数据类型的值直接在栈内存中存储,值与值之间时独立存在的,修改一个值不会影响其他的变量
  • 而对象是保存在堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响
  • 当比较两个基本数据类型的值时,就是比较值。而比较两个引用数据类型时,它比较的是对象的内存的地址,如果两个对象是一模一样的,但是地址不同,它也会返回false

对象字面量

1、使用对象字面量创建一个对象

  • 使用对象字面量,可以在创建对象时直接指定对象中的属性
  • 语法:{属性名 :属性值,属性名:属性值…}
  • 对象字面量的属性名可以加引号也可以不加,建议不加,如果使用特殊的名字,必须要加引号。
  • 属性值和属性名是一组一组的名值对结构,名和值之间使用冒号连接,多个名值之间使用逗号隔开,如果一个属性之后没有其他属性了,就不要写逗号。
var obj2 = {name:"猪八戒",
age:18//无逗号
};

函数function

  • 函数也是一个对象
  • 函数中可以封装一些功能,在需要的时候可以执行这些功能(代码)
  • 函数中可以保存一些代码在需要的时候用
  • 使用typeof检查一个函数对象时,会返回function

1、使用函数声明来创建一个函数

  • 语法: function 函数名([形参1,形参2…形参n]){
    语句
    }
function fun(){
alert("坏蛋");}
fun();//调用函数

2、使用函数表达式创建一个函数

语法:var 函数名 = function([形参1,形参2…形参n])

var fun2 = function(){
alert("代码");
}
fun2();

3、定义一个用来求两个数和的函数

  • 可以在函数的括号中指定一个或多个形参
  • 多个形参之间使用逗号隔开,声明形参就相当于在函数内部声明了对应的变量,但是并不赋值
function sum(a,b){
console.log(a+b);
}
sum(2,5);

4、创建一个函数,用来计算三个数的和,可以使用return来设置函数的返回值

  • 语法:return 值
  • return后的值将会作为函数的执行结果返回,可以定义一个变量,来接收该结果
  • 在函数中return后的语句都不会执行,使用return可以结束整个函数
  • 如果return语句后不跟任何值就相当于返回一个undefined,如果函数中不写return,则也会返回undefined
  • return后可以跟任何类型的值
function sum(a,b,c){
var d =a + b + c;
return d;}
var result = sum(5,2,3);

5、创建一个函数,可以在控制台中输出一个人的信息

  • 实参可以是任意的数据类型,也可以是一个对象
  • 当我们的参数过多时,可以将参数封装到一个对象中,然后通过对象传递
function person(o){
console.log("我是"+o.name+",今年我"+o.age+"岁了");
}
var obj = {
name:"悟空",
age:"18"
};
person(obj);

6、实参可以是一个对象,也可以是一个函数
7、有括号和无括号的区别
fun()

  • 调用函数

  • 相当于使用函数的返回值
    fun

  • 函数对象

  • 相当于直接使用对象

8、将函数对象使用return返回

枚举对象中的属性

  • 语法: for(var 变量 in 对象){ }
  • for…in 语句 对象中有几个属性,循环体中就会执行几次,每次执行时,会将对象中的一个属性的名字赋值给变量
var obj = {name:"孙悟空",
age:18};
for(var n in obj){
console.log("属性名"+ n);
console.log("属性值"+ obj[n]);
}

立刻执行函数

  • 函数执行完,立即被调用,这种函数被称为立即执行函数
  • 立即执行函数往往只会执行一次
(function(){ alert("wo");
})();

作用域

作用域指一个变量的作用的范围
在JS中一共有两个作用域

全局作用域

直接编写在script标签中的JS代码,都在全局作用域中

全局作用域在页面打开时创建,在页面关闭时销毁

在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,它由浏览器创建,我们可以直接使用

在全局作用域中:
(1)创建的变量都会作为window对象的属性保存
(2)创建的函数都会作为window对象的方法保存

全局作用域中的变量都是全局变量,在页面任意部分都可以访问的到

函数作用域

调用函数时创建的函数作用域,函数执行完毕以后,函数作用域销毁

每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的

在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量

当在函数作用域操作一个变量时,它会先在自身作用域寻找,如果有就直接使用; 如果没有则向上一级作用域寻找,直到找到全局作用域; 如果全局作用域中依然没有找到,则会报错ReferenceError

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

在函数中,不使用var声明的变量都会成为全局变量

你可能感兴趣的:(笔记,前端,css3,动画)