征服JavaScript 的第N天
文章目录
前言
第一天学习的是JavaScript一些基本的语法,现在我也不知道是第几天了,但是我感觉我好像慢慢的在被她征服,她想要反客为主,不行 绝对不行,干她 干她!
一、啊这儿 她还是… …
JavaScript(Java脚本)是一种基于对象(Object)和事件驱动( Event Driven)并具有安全性能的脚本语言,使用JavaScript可以轻松的实现与HTML的互操作,并且完成丰富的页面交互效果,它是通过嵌入或调入在标准的HTML语言中实现的,它的出现弥补了HTML的缺陷,是java与HTML折衷的选择。
二、JS函数
2.1函数的概念
- 封装了一段可被重复调用执行的代码块
- 目的:让大量代码重复使用
2.2函数的使用
- function 函数名(){函数体}
- function声明函数的关键词 全部小写
- 函数时做某件事情,函数名一般是动词
- 声明函数本身不会执行代码,只有调用函数时才会执行函数体代码
例如:
function getMax() {
alert('我是最大值')
}
getMax();//函数的调用
2.3函数的参数
- 参数作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
- function 函数名(形参1,形参2,…){} 函数名(实参1,实参2,…);
- 形参是来接收实参
- 函数的参数可以有,可以没有,个数不限
function getMax(max) {
alert('我是最大值' + max)
}
getMax(25);
2.3.1函数形参实参不匹配
- 如果实参的个数和形参的个数一致,则正常输出结果
- 如果实参的个数多于形参的个数,会取到形参的个数
- 如果实参的个数小于形参的个数,多余的形参就为undefined,最后 结果NaN
2.4函数的返回值
- return 语句
只要函数遇到return 就把后面的结果返回给函数的调用者 - return 终止函数
return 后面的代码不会被执行,退出函数
return只能返回一个值,有多个值就以最后一个值为准 - 函数没有return 则返回undefined
2.5arguments的使用
-
arguments获取参数,arguments对象存储了传递的所有实参
-
arguments展示形式是一个伪数组
具有length属性
按索引方式储存数据
不具有数组的push,pop等方法 -
只有函数才有arguments 而且每个函数都内置好了arguments
三、作用域及预解析
3.1作用域
- 作用域
限定名字的可用性的代码范围就是这个名字的作用域
目的:提高程序的可靠性,减少命名冲突 - 变量的作用域
全局变量:
1.如果在函数内部没有声明直接赋值的变量也是全局变量
2.在全局作用域下的变量
3.函数的形参可以看做局部变量
局部变量:
在局部作用域(函数作用域)下的变量
执行效率:
局部变量 当我们程序执行完毕就会销毁 - 作用域链
根据在内部函数可以访问外部函数变量的机制,用链查找决定哪些数据能被内部函数访问就称作用域链
3.2预解析
- 预解析
js引擎会把js里面所有的var 还有function提升到当前作用域的最前面 - 变量预解析和函数预解析
变量预解析:
把所有的变量声明提升到当前的作用域最前面,不提升赋值操作
函数提升:
把所有的函数声明提升到当前的作用域最前面,不提升调用操作
四、对象
4.1创建对象的三种方式
- 利用字面量创建对象
对象字面量:{}
例如:
var obj = {};
里面的属性或者方法我们采用键值对的形式
对个属性或者方法中间用逗号隔开
方法冒号后面跟的是一个匿名函数
- 利用new object创建对象
例如
var obj = new Object();
obj.name = '丑';
利用等号赋值,添加对象的属性和方法
每个属性和方法之间用分号结束
- 利用函数创建对象
构造函数就是把对象里面的一些相同的属性和方法抽象出来封装到函数里面
function 构造函数名(){this.属性 = 值;this .方法= function(){}} new 构造函数名();
构造函数名首字母大写
构造函数不需要return就可以返回结构
调用函数返回的是一个对象
调用构造函数必须使用new
只要调用函数就创建了一个对象
属性和方法前面添加this
例如:
function Gouzao(uname, leixin, boold) {
this.name = uname;
this.lei = leixin;
this.xue = boold;
this.fang = function (way) {
alert(way);
}
}
4.2new关键字
- 在内存中创建一个新的空对象
- 让this指向这个新的对象
- 执行构造函数里面的代码,给这个新对象填加属性和方法
- 返回这个新对象
4.3遍历对象属性
- 1.for …in语句遍历对象
- for (变量 in 对象)
- alert(k)输出属性名
- alert(obj[k]);得到属性值
- for…in里面的变量喜欢写k
五、内置对象
5.1Math对象
- Math.max()/Math.min()
如果给定的参数中至少有一个参数无法被转换成数字,则会返回 NaN
如果没有参数,则结果为 - Infinity。 - Math.PI
- Math.floor()向下取整
- Math.ceil() 向上取整
- Math.round()四舍五入就近取整
.5往大的取 - Math.abs()绝对值
- Math.random()随机数方法
返回一个浮点数,返回一个随机小数
两个数字之间的随机整数包含两数:
Math.floor(Math.random() * (max-min+1))+min;
5.2日期对象
-
构造函数,必须使用new来调用创建日期对象
var date = new Date(); -
日期格式化
-
获取日期的总的毫秒形式(时间戳)
Date对象是基于1970-1-1起的毫秒数
通过valueOf() getTime()
var date1 = +new Date(); 输出date1
Date.now() H5新增
5.3数组对象
- var arr1 = new Array()创建一个空数组
Array(一个值) 表示数组长度
Array(多个值) 表示数组元素 - 检测是否为数组
instanceof 运算符
Array.isArray(数组);
var arr = [];
console.log(arr instanceof Array);
-
添加删除数组元素的方法
push() 在数组的末尾,添加一个或多个数组元素 arr.push(4);
unshift() 在数组的开头添加一个或多个数组元素
pop() 删除数组最后一个元素
shift() 删除数组的第一个元素 -
翻转数组
reverse(); -
冒泡排序
sort();
arr.sort(function(a,b){return a - b;})升序
arr.sort(function(a,b){return a - b;})降序 -
数组索引
1.indexOf();
从开头开始查找
返回第一个满足条件的索引号
在该数组找不到元素返回-1
2.lastIndexOf();
从末尾开始查找 -
数组转换为字符串
toString();
join(分隔符); -
连接数组
concat()
链接两个或多个数组 不影响原数组
返回一个新数组 -
截取数组
slice()
数组截取 slice(begin,end); -
删除数组元素splice()
splice(第几个开始,删除个数)
返回被删除项目的数组,影响原数组
5.4字符串对象
-
根据字符返返回位置
字符串所以的方法都不会修改字符串本身,操作完成会返回一个新的字符串
indexOf(‘查找的字符’,起始位置); -
根据位置返回字符
charAt(索引号)根据位置返回字符
charCodeAt(索引号) 返回相应索引号的字符ASCAII值 目的:判断用户按下哪个键
str[索引号]获取指定位置处字符 -
concat()连接字符串
-
substr()截取字符串
str.substr(截取的起始位置,截取几个字符) -
替换字符replace()
str.replace(被替换的字符,替换为的字符)
只会替换第一个字符 -
字符串转换为数组split(‘分隔符’)
总结
美好的时光总是那么的短暂 转眼间连赞都不留下一个你就要对我转身离别
甚至没有一丝的留恋 我挥了挥手 嘴上默念 下次一定要再见
我要挽住你的肩膀 对你深情的说
留下你的赞 不然剁了你的手 有手不赞 要它有何用!
我快不行了 兄弟们
奶妈 奶妈! 你在哪儿 给我加血 加血!