一、函数基础认识
1.1 函数:
function ,是被设计为执行特定任务的代码块。
1.2 函数使用
目标:掌握函数语法,把代码封装起来。
function 函数名() {
函数体
}
函数命名规范:
和变量命名基本一致、精良使用小驼峰式命名法、前缀应该为动词。
动词 | 含义 |
can | 判断是否可执行某个动作 |
has | 判断是否含义某个值 |
is | 判断是否为某个值 |
get | 获取某个值 |
set | 设置某个值 |
load | 加载某些数据 |
函数调用语法:
函数名() ;声明(定义)的函数必须调用才会真正被执行,使用()调用函数。
1.3 函数传参
有参数的函数声明和调用
function 函数名(参数列表) {
函数体
}
参数列表:
1. 传入数据列表
2. 声明这个函数需要传入几个数据
3. 多个数据用逗号隔开
形参和实参:
形参可以理解为是在这个函数内声明的变量;实参可以理解为是给这个变量赋值。
// 声明 (形参, 形参)
function getSum(num1, num2) {
document.write(num1 + num2)
}
// (实参, 实参)
getSum(1, 2)
1.4 函数返回值
处理结果返回给调用者;根据需求,来设定需不需要返回值。
用return返回数据
return 数据
函数内部只能出现1次return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写;return 会立即结束当前函数;函数可以没有return ,这种情况函数默认返回值为 undefined 。
1.5 作用域及作用域链
作用域概述 :
代码可用范围;作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
全局作用域 (全局有效)、 局部作用域 (局部有效)、块级作用域( {}内有效
变量的作用域:
在js中,更具作用域的不同,变量可以分为 :
全局变量:函数外部的 let 变量
局部变量:函数内部的 let 变量
块级变量 : {}内部的 let 变量
特殊情况:如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也是当全局变量来看,不推荐。
function fn() {
num = 10
}
fn()
console.log(num)
变量访问原则-作用域链
根据在内部函数可以访问外部函数变量这种机制,用链式查找决定那些数据能被内部函数访问,被称为作用域链。采取就近原则的方式来从查找变量最终的值。
1.6 匿名函数
函数可以分为:
具名函数:声明:function fn(){}
调用: fn()
匿名函数: function(){}
将匿名函数赋值给一个变量,并且通过变量名称进行调用,将这个成为函数表达式 。
语法:
let fn = function () {
//函数体
}
调用:
fn() //函数名()
立即执行函数
避免全局变量之间的污染。
语法:
// 方式1
( function () { console.log(11) })();
// 方式2
( function () {console.log(11)}());
二、对象(object)
对象是一种数据类型,是无需得数据的集合;可以详细描述某个事物。
1.1 对象使用
对象声明语法:
let 对象名 = {}
对象由属性和方法组成:
属性:信息或叫特征。
方法: 功能或称行为。
let 对象名 = {
属性名:属性值,
方法名:函数
}
属性访问: 声明对象,并添加了若干属性后,可以使用,或 [] 获得对象中的、属性对应的值。
let person = {
name: 'andy'
age: 18
sex:'男'
}
console.log(person.name)
console.log(person.age)
//也可以写成这样
//console.log(person['name'])
//console.log(person['age'])
对象中的方法:数据行为性的信息称为方法,本质是函数。
a. 方法是由方法名和函数两部分构成。
b. 方法是依附在对象中的函数。
c. 方法名可以使用“或”,一般情况下省略,除非名称遇到特殊符号(空格、中横线等)。
let person = {
name: 'andy',
sayHi: function() {
document.write('hi~~')
}
}
person.sayHi() //对象名.方法名()
对象中的方法访问: 对象名.方法名()
1.2 操作对象
对象本质是无序的数据集合,操作数据就是 增 删 改 查 语法:
查:查询对象 对象.属性 或者 对象['属性'] 对象.方法 | 改:重新赋值 对象.属性 = 值 对象.方法 = function() {} |
增:对象添加新的数据 对象名.新属性名 = 新值 | 删:删除对象中属性 delete 对象名.属性名 |
1.3 遍历对象
对象没有数组一样的length 属性,无法确定长度。
对象里面是无需的键值对,没有规律,不像数组里面有规律的下标。
let obj = {
uname: '小明',
age: 18,
sex: '男'
}
/*
for in 循环语句
语法:
for (let k in 对象) {} |重点|
k 变量 k 或者 key
*/
for (let k in obj) {
console.log(k) //属性名
//console.log(obj.k) //obj.k 意思是 obj 里面的 k属性;打印出来是undefined
console.log(obj[k]) //能正常打印出属性值,k是变量,不加引号
/*
console.log(obj['k'])
这个写法和console.log(obj.k)是一样的
*/
/*
为什么这么写?
k === 'uname' === 'age' === 'sex'
obj.['sex'] === 18
*/
/*
获得对象属性是 k
获得对象值是 obj[k]
*/
}
1.4 内置对象
内置对象 Math
Math 对象是Js提供的一个 计算 对象;提供了一系列做数学运算的算法。
方法有:
random:生成0-1之间的随机数(包含0不包含1)
cell:向上取整
floor:向下取整
max:最大数;min:最小数
pow:幂运算
abs:绝对值
······
1.5 拓展-基本数据类型和复杂数据类型