交互编程的三个基本要素:
1.用户输入
2.程序内部处理
3.输出结果
1.数据类型: 字符串型。数字型,bool型,undefined型,null型,infinity(无穷大),-infinity(负无穷大),NaN(Not a number)
2. 自增: n++ 或者 ++n
3. 自减: n-- 或者 --n
4. 一个等号为赋值,两个等号为判断,三个等号为全等
5. && 逻辑与 ,|| 逻辑或 ,! 逻辑非
6. if 语句格式 :if(条件表达式 ) { xxx }
7. 三元表达式: 由三元运算符组成的式子成为三元表达式,语法结构:条件表达式? 表达式1:表达式2 , 执行思路,如果条件表达式结果为真,则返回 表达式1 的值,否则返回 表达式2 的值
8. switch语句: 语法结构: switch(表达式) { case value: xxx default:xxx},其中default是前面的 case的情况都不满足再执行
9. while语句: while(表达式) { xxx},先判断条件是否满足,如果表达式为真,再执行循环体内部的结构,
10. 10.do while语句: do { xxx } while(条件表达式),执行思路:跟while不同的地方在于 do while 先执行一次循环体,再判断条件,所以至少执行一次
11. 声明函数之后再调用函数,函数不调用,函数本身就不会执行,只有在调用的时候函数体内部的代码才会执行和发挥作用
12. 函数的封装:把一个或多功能通过函数的方式封装起来,对外只提供一个接口,简单理解(封装类似将电脑配件整合到机箱中,类似于快读打包)
13. 当一个函数不知道会有几个参数传进来的时候,就可以使用arguments,函数内部使用 arguments[n]的形式可以调用传进来的参数,它是一个伪数组(并不是真正意义上的数组) 1st:具有数组的length属性 ,2nd:按照索引的方式进行存储,3rd:他没有真正数组的一些方法如 pop(), push()等
14. 函数之间可以相互调用和嵌套使用
15. 调用函数需要添加小括号
16. 两种函数的声明:1st利用函数关键字定义函数(命名函数):function fn() {},2nd:函数表达式(匿名函数): var fun =function() {};,调用 fun(),fun是变量名不是函数名, 3rd:函数表达式声明方式和声明变量差不多,只不过变量里面存的是值, 而函数表达式里面存的是 函数
17. 作用域:就是代码(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性更重要的是减少命名冲突
18. 局部作用域: 在函数内部就是局部作用域,这个代码的变量只在函数内部起效果
19. 从执行效率来看,全局变量只有当浏览器关闭的时候才会销毁,比较占内存资源,局部变量 当程序执行完就会销毁,比较节约内存资源
20. 内部函数可以访问外部函数的变量,例如:如果外部第一层函数 fn()没有num,则会在script的子级代码中寻找num
21. 预解析:JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器再运行JavaScript代码的时候分为两步:预解析 和 代码执行
22. 在JavaScript 中,对象是一组无序的相关属性和方法的集合,所以的事物都是对象,例如字符串,数值,数组,函数等
23. 将某人的信息保存在数组内: var arr =[‘name’,‘sex’,age,‘weight’],这样就创建了一个数组类的对象
24. 如何调用对象属性:调用对象的属性 我们采取这种方法 对象名 . 属性 . 我们理解为 的 ,调用 属性还有一种方法 对象名[属性名]
25. 利用new Object 创建对象: new后面的 首字母必须大写, 例如
var obj = new Object(); //创建了一个空对象
obj.uname='张三疯';
obj.age=18;
obj.sex='男';
obj.sayHi=function() {
console.log('你好呀');
}
,我们利用 等号 “=” 赋值的方法,添加对象的属性和方法,每个属性和方法之间用 分号结束
26.构造函数创建对象:function xxx(x1,x2,x3) {},记得用 this.xxx=x1来给每一个属性赋值
27.遍历对象: 用 for in遍历我们的对象:for( 变量 in 对象):
for (var k in obj) {
console.log(k); //k 变量 输出 得到的是属性名
console.log(obj[k]); // obj[k] 得到的是属性值
// console.log(obj.k); 此方法不行
}
// 我们使用 for in 里面的变量 我们喜欢写 k 或者 key
28.Math对象: Math.max():求全部数中的最大值, Math.abs():求某一个数的绝对值,若括号内是 ‘pink’,则返回 NaN
29.Math三个取整方法: 1st: Math.floor():往小了取整,如1.9变为1 ,2nd: Math.ceil():往大了取整,如1.1变为2, 3rd:Math.round(): 四舍五入,其他数字都是四舍五入,但是 .5特殊 ,它往大了取, -1.5会变成 -1(因为-1大于-2)。
30.Math的随机数方法:random() ,返回的是在0<=x<1之间的小数,这个方法里面不跟参数,我们想要得到两个数之间的随机整数,并且包含这两个数:
用 Math.floor(Math.random()*(max-min+1)+min),例如
function getRandom(min,max) {
return Math.floor(Math.random()*(max-min+1)) + min;
}
// 5.随机点名
var arr=['张三','李四','王麻子','特朗普','奥巴马','许嵩','周杰伦','维斯布鲁克']
console.log(arr[getRandom(0,arr.length-1)]);
31:Date日期对象: Date()日期对象 ,是一个构造函数, 必须使用 new 来调用 ,创建我们的日期对象,例如: var arr = new Date(), 1st:使用Date,如果没有参数,则返回系统当前的时间
32:Date参数的常用写法: 1st:数字型: 2019,10,01 ,当使用数字型的写法,会自动给月份多加一个月,上述会打印出11月份,2nd:字符串型:‘2019-10-1 8:8:8’
33. var date =new Date()之后,使用:1st: date.getFullYear():返回当前日期的年,2nd: date.getMonth()+1 :返回月份,不过要比当前小一个月,所以+1,3rd:date.getDate():返回是几号,4th:date.getDay(), 返回的星期几,但是周日返回的是 0 例子:
var year =date.getFullYear();
var month = date.getMonth()+1;
var dates = date.getDate();
var day =date.getDay();
var arr =['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
console.log('今天是'+year + '年'+month+'月' +dates +'日' +arr[day]);
34.还是如上初始化 date, 1st:date.getHours():获取小时,2nd:date.getMinutes():获取分钟,3rd:date.getSeconds():获取秒数
35.时间戳: 获得Date总的毫秒数,不是当前时间段毫秒数,而是距离1970年1月1日过了多少毫秒数,为什么是1970年的这个时候呢?自行去百度把哈哈哈。
36.三种获得时间戳的方法: 1st:通过 valueOf 和 getTime() 获取:date.getTime() , date.valueOf(), 2nd:简单写法(最常用的写法): var date1=+new Date() ,3rd:更简单的写法 H5新增的:Date.now() ,新方法注意兼容性
37.数组的两种创建方式: 1st:利用数组字面量:var arr = [1,2,3],2nd:利用new Array(), var arr1 = new Array(2):这个2表示 数组的长度为2,里面有两个空(empty)的数组元素,var arr2 =new Array(2,3):等价于 [2,3],这样写表示有两个数组元素 分别是 2 和 3
38.检测是否为数组方法:1st:利用 instanceOf 例如:
console.log(arr instanceof Array);
如果是数组 则返回 True,否则返回 false,2nd:Arrary.isArray(xxx), 例如:
console.log(Array.isArray(arr));
值得注意的是:Array.isArray(参数); 是H5新增的方法 ,ie9 以上的版本才支持。
39.添加数组元素: 1st:在数组末尾添加元素: arr.push(参数) ,2nd: 在数组的开头添加数组:arr.unshift(参数),值得注意的是: push或unshift完毕之后,返回的结果是 新数组的长度 , 原数组也会发生变化,若原先数只有3个元素,经过以下代码变换之后,数组长度就变为5,且4,pink被加入到原数组
console.log(arr.push(4, 'pink')); // 返回值 5
40.删除数组元素: 1st:arr.pop() ,它是删除数组的最后一个元素,一次只能删除一个元素,他返回的值是删除的那个元素,原数组也会发生变化。 2nd:shift(), 它是删除数组的第一个元素,shift没有参数,它返回的值也是被删除的那一个数组元素,原数组也会发生变化
41.数组的排序:使用 arr.sort() , 但是如果需要排序成功 ,需要加如下代码:
//需要进行一下操作才可以正确的排序成功
arr.sort(function(a,b){
// return a-b; //升序的顺序排列
return b-a; // 降序的顺序排列
});
42.数组的索引: 返回数组元素索引号的方法,1st: indexOf(数组元素) ,此方法默认是从前慢开始找 ,它只返回第一个满足条件的索引,后面有满足的将不会再执行,当在数组中找不到元素的时候 ,他将返回值 1, 2nd: lastindexOf(数组元素), 此方法是从后往前查找的,但是索引号不变
43.数组转化为字符串: 使用 arr.toString() 的方法使得数组转化为字符串,和数字等转化为字符串类似.
function fun() {
console.log(num); //undefined
var num = 20;
}
var num = 10;
fun();
//相当于执行了以下操作
var num;
function fun() {
var num;
console.log(num);
num = 20;
}
num = 10;
fun()
function Star(uname,age,sex,song) {
this.name=uname;
this.age=age;
this.sex=sex;
this.sing =function( song) {
console.log(song);
}
}
var ldh = new Star('须知毫',18,'男',);
ldh.sing('hahahahaaaaa')
26.内置对象: JavaScript中的对象分为三种: 自定义对象,内置对象,浏览器对象
前两种对象是js的基础内容,属于ECMAScript;第三个浏览器对象属于我们js独有,称为 JS API
内置对象就是指 JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者是最基本而必要的功能(属性和方法)
27.console.log(Math.max(1,23.32,3223,23,‘sad’)); // 结果是NaN,因为其中混入了一个 ‘sad’,不是数字类型
28.console.log(Math.abs(’-1’)); // 隐式转换 会把字符串型的 -1 转换为数字型
29.Math.random() 不能提供像密码一样安全的随机数,不能用他们来处理有关安全的事情
30.Date()中的 月份和 星期日的表示和中国有些不同,星期日用0表示,月份都要比我们的表示小一个月
31.倒计时案例 获取天数,小时,分钟,秒数的 算法: 在取得剩余时间的总毫秒数之后:
times=times/1000:(获取秒数,parseInt(1s=1000ms))
1st: 天数 : var days =parseInt( times/60/60/24;)
2nd:小时: var hours = parseInt(times/60/60%24;)
3rd: 分钟:var minutes = parseInt(times/60%60;)
4th:秒数: var seconds = parseInt(times%60)
32.instanceOf 不仅可以拿来判断是否是数组,也可以拿来验证是否是其他东西, 使用 aaa instanceOf bbb, 译为: aaa 是 bbb吗?
console.log(obj instanceof Object);
上例为判断是否为 一个 对象(Object)
32.一个函数的return的注意事项:
return语句之后的语句将不会再执行
return num1,num2;
则返回的结果是最后一个值