网页 = Html+CSS+JavaScript:
Html: 网页元素内容;CSS: 控制网页样式;JavaScript:操作网页内容,实现功能或者效果
引入方式:alert(1);alert(1);
<script src="index.js"></script>
<script> alert(1) </script>
白屏问题:
使用 link 标签将样式表放在顶部
如果把样式放在底部,对于IE浏览器,在某些场景下(新窗口打开,刷新等)页面会出现白屏,而不是内容逐步展现
如果使用@import标签,即使 CSS 放入 link, 并且放在头部,也可能出现白屏
将JS放在底部
对于图片和CSS, 在加载时会并发加载(如一个域名下同时加载两个文件). 但在加载 JavaScript 时,会禁用并发,并且阻止其他内容的下载. 所以把 JavaScript 放入页面顶部也会导致白屏现象.
加载异步
没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。
有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。
有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。
defer:脚本延迟到文档解析和显示后执行,有顺序
async:不保证顺序
基本调试:
alert
console.log
打断点
二分法
关键字:
关键字是JavaScript引擎会用到的一些字,我们标识符不能再使用
保留字
除了这些不能用作标识符的关键字,js还规定了一些不能用作标识符的保留字,这些字符没有什么意义,但是未来会用到
数据类型:
数值(number):整数和小数(比如1和3.14)
字符串(string):字符组成的文本(比如"Hello World")
布尔值(boolean):true(真)和false(假)两个特定值
undefined:表示“未定义”或不存在,即此处目前没有任何值
null:表示空缺,即此处应该有一个值,但目前为空
对象(object):各种值组成的集合数值(number):整数和小数(比如1和3.14)
JavaScript有三种方法,可以确定一个值到底是什么类型。
typeof运算符
instanceof运算符
Object.prototype.toString方法
typeof运算符可以返回一个值的数据类型,可能有以下结果。
对于null和undefined,可以大致可以像下面这样理解
null表示空值,即该处的值现在为空。典型用法是:
作为函数的参数,表示该函数的参数是一个没有任何内容的对象。
作为对象原型链的终点。
undefined表示不存在值,就是此处目前不存在任何值。典型用法是:
变量被声明了,但没有赋值时,就等于undefined。
调用函数时,应该提供的参数没有提供,该参数等于undefined。
对象没有赋值的属性,该属性的值为undefined。
函数没有返回值时,默认返回undefined。
Number:
JavaScript的数字类型和其它语言有所不同,没有整型和浮点数的区别,统一都是Number类型,可以表示十进制、八进制、十六进制
JavaScript Number不能表示所有数字,Infinity 表示无穷大;
NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,包括自己
数值转换
有三个函数可以把非数值转换为数值
1.Number()2.parseInt()3.parseFloat()
parseInt StringparseFloat
1.忽略字符串前面的空白字符,找到第一个非空白字符
2.如果第一个字符不是-或者数字返回NaN
3.如果是继续解析,直到非数值模式为止
4.0开头会当做八进制,0x开头会当做十六进制,但是可以指定第二个参数指定基数
String
String是Unicode字符组成的序列,俗称字符串,可以用双引号或者单引号表示,没有区别,匹配即可
Object
对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。key我们称为对象的属性,value可以是任何JavaScript类型,甚至可以是对象
忽略字符串前面的空白字符,找到第一个非空白字符
如果第一个字符不是-或者数字返回NaN
如果是继续解析,直到非数值模式为止
0开头会当做八进制,0x开头会当做十六进制,但是可以指定第二个参数指定基数