函数是定义一次但能够调用或执行任意屡次的一段JavaScript代码。数组
函数也叫作方法(了解概念)函数
当一个函数在一个对象上被调用的时候,这个函数就叫作方法。 此时, 它的调用所在的对象就会做为函数的一个隐式的参数来传递。this
// 函数
function func() {
}
var obj = {
age: 18,
getAge: function() {
// 方法
}
};
//函数:是直接调用
//方法:是经过对象调用的
// 函数声明的基本语法
// function关键字、funcname、小括号、大括号都是必需的
// 参数不是必需的
function funcname([arg1 [,arg2 [..., argn]]]) {
statements
}
// 函数调用语法:函数名后面跟运算符()来调用
funcname();
1 函数声明不能出如今相似:if语句中(尽管不报错,但这是糟糕的作法!若是这么作了,容易出现混乱)对象
2 funcname是要定义的函数名,必须是一个标识符(不要使用保留字或关键字),而不能是字符串或者表达式。ip
3 包含在小括号中的0个或多个参数,参数用逗号隔开作用域
4 大括号内的是函数主体,包含了多条语句字符串
5 return语句,无关紧要。get
6 函数命名推荐使用帕斯卡命名法,即第一个单词后的全部单词都以一个大写字母开始。回调函数
//形参(函数声明时候的参数)
function f(a, b) {} // a,b是形参,占位用,函数定义时形参无值
//实参(函数调用时候的参数)
var x = 5,
y = 6;
f(x, y); //x,y实参,有具体的值,会把x,y复制一份给函数内部的a和b
由于可使用方括号语法访问它的每个元素(即第一个元素是 arguments[0] ,第二个元素是 argumetns[1] ,以此类推),使用 length 属性来肯定参数长度。 没有传递值的命名参数将自动被赋予 undefined 值,跟定义了变量但又没有初始化同样。string
function testArguments() {
console.log("第一个参数为:" + arguments[0]);
}
testArguments("123"); // 第一个参数为:123
// funcname 能够省略
var func = function funcname() {
statements
};
var func = function fun () {
console.log(fun); // 函数体
};
func();
console.log(fun); // Uncaught ReferenceError: fun is not defined
// 基本数据类型
function add(num) {
num = num + 10;
return num;
}
var count = 20;
var result = add(count);
console.log("count的值为:" + count); // ??
console.log("result的值为:" + result); // ??
// 复杂数据类型
// 1.
function setAge(obj) {
obj.age = 18;
}
var person = new Object();
person.age = 30;
setAge(person);
console.log(person.age); // ??
// 2.
function setName(obj) {
obj.name = "小明";
obj = new Object();
obj.name = "小红";
}
var person = new Object();
person.name = "Jack";
setName(person);
console.log(person.name); // ??
数据类型
基本数据类型 string number boolean null undefined
复杂数据类型 Object
获取变量的数据类型: typeof 变量名 或者 typeof(变量名)
基本类型(值类型)在栈中存储
引用类型的对象在堆中存储,地址在栈中存储
什么是对象
对象其实就是一组数据和功能的集合 键值对的集合
对象能够方便地描述和模拟客观事物
// 建立一个对象
var obj = new Object();
// 给对象设置属性
obj.name = "小明";
obj.age = 18;
JavaScript中的对象:无序属性的集合,其属性能够包含基本值、对象或者函数。
严格来说,这就至关于说对象是一组没有特定顺序的值。对象的每一个属性或方法都有一个名字,
而每一个名字都映射到一个值。
对象与数字、字符串、布尔值这样的数据类型不一样,它们不是表示一个单个的值,而是值的集合。
对象是已命名值的一个集合。
数字、字符串、布尔值是简单数据类型
对象是复杂数据类型
// 使用 new 操做符,后面跟 Object构造函数调用,来建立对象
// 此时,返回值:obj,就是新建立出来的对象
var obj = new Object();
// 给对象添加属性
obj.name = "静静";
obj.age = 18;
obj.getName = function () {
return this.name; // 静静
};
// 语法规则
var person = {
// 属性名: 属性的值
// 使用逗号来分隔不一样的属性(若是当前属性后面还有其余属性的话)
name: "Nicholas",
age: 18
};
// 建立对象设置属性
var person = {
name: "加引号的属性名称",
0: "属性名为数值类型,那么这里的数值属性名会自动转换为字符串"
};
// 建立一个空对象,没有任何属性
var person = {};
1. 对象字面量是对象定义的一种简写形式,目的在于简化建立包含大量属性的对象的过程。
2. 语法规则中,左边的花括号({)表示对象字面量的开始,由于它出如今了表达式上下文中。
3. 对象字面量的属性名,能够不加引号 也能够加引号(单引号或者双引号均可以)
// 建立一个空对象
var obj = {};
// 使用点运算符(.)来设置属性的值
obj.name = "这是name属性的值";
obj.age = 18; // 给age属性设置值:18
// 使用方括号[]来设置属性的值,注意:要访问的属性是字符串的形式或者是变量
obj["font-size"] = "30px";
// 获取属性的两种方式
console.log(obj.name);
console.log(obj["name"]);
区别:
1. 均可以用来设置或者获取对象的属性。
2. 方括号([])能够经过变量来访问属性。
3. 属性名中包含会致使语法错误的字符,或者属性名使用的是关键字和保留字,使用方括号表示法。
例如:obj["first name"],因为"first name"中包含一个空格,因此不能使用点表示法来访问它。
而后,属性名中是能够包含非字母非数字的,这时候就可使用方括号表示法来访问它们。
4. 除非必须使用变量来访问属性,不然推荐使用点表示法。
var obj = {
name: "明哥",
age: 18,
weight: 50
};
for(var ob in obj) {
// ob 为属性名
// obj[ob] 为属性名对应的值
console.log("属性 " + ob + " 的值为:" + obj[ob]);
}
function Person(name, age) {
this.name = name;
this.age = age;
}
var p = new Person("猴哥", 18);
console.log(p.name);
console.log(p.age);