1,JavaScript的引入
JavaScript赋予网页灵魂,让页面可以动起来,更增加了与用户的交互,使用起来的也比较方便
<head>
<script type="text/javascript">
// javascript 代码
</script>
</head>
或者在body的结尾引入
<body>
<script src="" type="text/javascript" charset="utf-8"></script>
</body>
JS放在head和放在body中的区别
1,JS如果放在head中,则先被解析,但这个时候body还没有解析,DOM节点还没有生成,所以会返回空值 undefind。解决的办法
windows.onload = function() {
// JS代码
}
所以:放在head中的JS代码会在页面加载完之前就被读取了,而放在body结尾的代码,会在整个页面加载完之后被读取。
JavaScript应该放在哪里?有时候我们想让一段脚本在页面加载的时候优先执行,有时候我们想在用户触发一个事件的时候执行,所以,具体放在哪里,因需求而定。
2,词法结构
(1) JavaScript是区分大小写的,所以声明变量的时候要注意。HTML是不区分大小写的
(2) JavaScript注释方法:单行注释:// 多行注释:/**...*/ 多行注释不能嵌套多行注释
(3) JavaScript没有强制要求使用分号,因为在解析的时候,除了分号还会以换行作为断句的依据,从而会帮你填补分号。个人建议:为了增强代码可读性,减少歧义,个人意见是在语句结束的地方,加上分号。
(4)JavaScript标识符第一个字符必须是字母,下划线,或者美元符号,切记,数字是不允许作为首字符出现的,而且变量名中不能出现空格,或者标点符号
(5)在JavaScript里面具有某种特殊意义的单词叫做关键字,可能将来作为关键字的叫做保留字。这些单词是不允许作为声明的变量使用的
关键字 && 保留字
abstract | double | goto | native | static |
---|---|---|---|---|
boolean | enum | implements | package | super |
byte | export | private | synchronized | import |
char | extends | int | protected | throws |
class | final | interface | public | transient |
const | float | long | short | volatile |
break | do | case | else | void |
continue | for | switch | while | debugger |
if | throw | delete | in | try |
var | function | new | return | default |
let | yield | arguments | true | this |
3,类型
JavaScript的6中数据类型,可分为两类:原始类型 和 对象类型
原始类型:number,string, boolean, null, undefined
对象类型:object( 包含Function, Array, Date, RegExp,Error ... 等等),
符合(symbol) ES6新增类型
可以用typeof运算符来查看值的类型
<script type="text/javascript">
console.log(typeof undefined === 'undefined')
console.log(typeof true === 'boolean')
console.log(typeof 100 === 'number')
console.log(typeof 'abc' === 'string')
console.log(typeof {} === 'object')
console.log(typeof function a(){} === 'function')
console.log(typeof null === 'object') // 特别注意,存在已久的bug
console.log(typeof Symbol() === 'symbol')
// 日常开发判断null方法
var str = null;
console.log(!str && typeof str === 'object')
</script>
上述代码结果返回都是true值
4,表达式和运算符
(1)&& ,& 第一个和第二个都为true,则返回true
(2)|| ,| 只要有一个为真值就返回真,全假返回false
(3)a++ 先使用a值,然后加1, ++a 先加1,然后使用a值 (b--和--b同理)
(4)= 称作赋值 == 称作相等 === 称作严格相等
1,如果两个值类型不相同,则他们不相等
2,如果两个值都是null,undefined,则他们不相等
3,如果两个值都是false,true,则他们相等
4,如果任何一个值为NaN,或者两个都为NaN,则不相等
5,如果两个引用值指向同一个对象,数组或者函数,则相等
(5)in运算符,左边操作数是一个字符串,右侧是一个对象,如果右边对象里面含有左边操作数的值,那么表达式返回true
(6)instanceof运算符,左侧为一个对象,右侧表示对象的类,如果左侧对象是右侧类的实例,返回true。注意:所有的对象都是Object的实例