1.js代码可以写的位置
①script标签中
②html标签中
③外部引入的js文件中
2.在一对script的标签中有错误的js代码,那么该错误后面的js代码不会执行
3.如果第一对script的标签中有错误,不会影响后面的script标签中的js代码的执行
4.script标签在页面中可以出现多对
5.script标签一般放在body的标签的最后的,有的时候会在head标签中
为什么放在body最后???
①因为,很多js都是在dom对象渲染完之后,对其进行绑定事件之类的操作,
而浏览器解析html是从上倒下解析的,放在head中,先解析js文件,而dom
树还没渲染的话是绑定不了事件的,也就是js相当于失效了。
②其次,js文件过大,下载速度过慢,页面没加载出来,影响用户体验。
6.如果script标签用来引用外部js,不要再在里面写js,要写另起一个script标签写
7.什么是变量,为什么要使用变量
8.数字交换3种方法
9.使用typeof获取变量的数据类型
10.原始数据类型number,string,boolean,null,undefined,object
number:整数,小数
string:一般用' 或 "括起来
boolean: true (1) false(0) 性别 sex1=true; // 男 sex2=false; //女
null:空类型,值只有一个:null,一个对象指向为空了,此时可以赋值为null
undefined:未定义,值只有一个:undefined
11.什么情况下的结果是undefined
①变量声明了,没有赋值。例:var num;
②函数没有明确返回值,如果接受了,是undefined
12.NaN,如果一个变量的结果是undefined和一个数字进行计算,
结果:NaN不是一个数字,也没有意义
13.console以字符串输出为 黑色,蓝色一般是数字
14.js中的一些进制表示
var num = 10; // 十进制
var num2 = 012; // 八进制
var num3 = 0x123;// 十六进制
15. Number类型有范围
最大值:Number.MAX_VALUE
最小值:Number.MIN_VALUE
无穷大:Infinity
无穷小:-Infinity
16.不要用 小数去验证小数
17.字符串个数 str.length
18.js中的转义符
19.使用 + 是字符串拼接,使用除+外的 -,*等时 如果是数字会将字符串转为
数字(隐式转换)进行计算
20.其他类型转数字类型
①parseInt(); // 转整数
②parseFloat(); // 转小数
③Number(); // 转数字
21.其他类型转 字符串类型
① .toString()
如果变量有意义使用这个
② String(num1)
如果变量没有意义,使用这个
22.其他类型 转 布尔类型 Boolean(值);
23.== 不严格 === 严格 != 不严格 !== 严格
不严格:值的比较
严格:类型和值同时比较
24.Chrome调试
25.js数组
数组:一组有序的数据
作用:可以一次性存储多个数据
26.创建js数组的方式
①通过构造函数创建数组
var arr = new Array(); // 没有数据,空数组
arr = new Array(5);// 数组中有长度但没数据,数组中每个值都是undefined
arr = new Array(1,2,3,4,5);// console出来[1,2,3,4,5]
②通过字面量的方式创建数组
var arr = [];
27.数组里面存的数据类型可以不一样,但是一般我们都放同类型的
28.求数组中最大值
29.冒泡排序
30.函数的定义
function 函数名(形参){
....
}
形参:函数在定义的时候小括号例的变量叫形参
实参:函数在调用的时候小括号里传入的参数叫实参
31.若果一个函数中有return,则这个函数就有返回值
32.匿名函数直接给变量
var f2 = function () {
};
f2();
33.函数直接调用,只能用一次
(function(){...})();
34.函数是有数据类型的,数据类型是function
35.函数可作为参数使用
36.函数可作为返回值使用
37.js中的全局变量和局部变量
除了函数以外,其他位置定义的变量都是全局变量
38.作用域链
39.预解析 (只会提升变量和函数的声明,不会提升调用)
what:就是在解析代码之前,把变量的声明提前了,函数的声明也会提前。
会提前到当前所在的作用域的 最上面!!
是将声明提前,声明是没有赋值的,所以undefined!!!
预解析分段:
40.预解析案例
41.预解析变量和函数声明被同时提前的时候,总是变量在上面
42.隐式全局变量:声明的变量没有var,就叫隐式全局变量,无论是否在函数内
43.js不是面向对象的语言,但可以模拟面向对象的思想
js是一门基于对象的语言
=====================JS对象===========================
1.创建对象的三种方式
①调用系统的构造函数
②自定义构造函数
③字面量的方式创建对象
2.自定义构造函数创建对象做了几件事
3.字面量方式创建对象
4.对象总结
5.设置,访问属性的另一种方法
6.JSON格式的数据及遍历
7.简单类型 和 复杂类型
======================JS内置对象======================
0.MDN 中 学习api
1.内置对象
Math,Date,String,Array,Object
2.Math是个对象不是一个函数,学到原型会知道
3.实例对象,静态对象
实例方法必须通过实例对象调用
静态方法必须通过大写的对象调用
4.随机数Math.random(); // [0,1)
5.Math对象的案例
6.Date对象
7.格式化日期和时间
/**
* 获取指定格式的时间 2018年08月07日 13:45:25
* @param dt 日期的对象
* @returns {string} 返回的是字符串的日期时间
*/
function getDate(dt) {
//获取年
var year = dt.getFullYear();
//获取月
var month = dt.getMonth() + 1;
//获取日
var day = dt.getDate();
//获取小时
var hour = dt.getHours();
//获取分钟
var minute = dt.getMinutes();
//获取秒
var second = dt.getSeconds();
month = month < 10 ? "0" + month : month;
day = day < 10 ? "0" + day : day;
hour = hour < 10 ? "0" + hour : hour;
minute = minute < 10 ? "0" + minute : minute;
second = second < 10 ? "0" + second : second;
return year + "年" + month + "月" + day + "日 " + hour + ":" + minute + ":" + second;
}
8.String对象
9.字符串特性:不可变形,字符串的值是不能改变的
10.字符串之所以看起来是改变了,那是因为指向改变了,并不是原来的值改变了
11. String方法
12.string案例
13.Array对象
截取数组中某段 [ , )
删除,替换,插入数组
14.基本包装类型 (string number boolean)
普通变量不能直接调用属性或方法
对象可以直接调用属性和方法
如果是一个对象&&true,那么结果是true 如果是一个true&&对象,那么结果是对象
注意类型转换 和 基本包装类型的区别