JavaScript基础知识-(词法,类型)

184 阅读3分钟

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的实例