一、引入JS
1、页面级嵌入 head 和 body 都可以;
2、外部引入js文件, 符合web标准(w3c标准)结构、样式、行为相分离。
二、 JS 语法
1、变量声明
单一var
2、变量命名
(1)必须以英文字母、 _ 、$ 开头
(2)变量名可以包括英文字母、 _ 、$、数字
(3)不能用关键字和保留字
3、值类型——数据类型
a.不可改变的原始值(栈数据) :
Number:数字;
Boolean: true / false;
String: 字符串 "abc";
undefined :无定义(声明的变量没被赋值);
null:占位.
原始值储存方式:
原始值存在栈内存(stack)里,有底没顶。
var num = 100;
var num1 =num;
num = 200;
console.log(num1); -->100
1)先申请一个房间"num",赋值100。
2)然后再申请一个房间"num1",赋值拷贝"num"里面的值。(因为是拷贝值,所以改变num的值,不会影响num1里面的值)
3)重新赋值200给房间"num",此时是重新申请一个新房间"num"赋值200,原来的房间恢复原来的编号,而里面的值无法改变。
删数据只是剪断房间与数据之间的联系,无从查找,只有二轮覆盖的时候才是真正的删除数据。
b.引用值(堆数据) :array Object function data RegExp
储存方式:
var arr = [1,2];
var arr1 = arr;
arr.push(3);
console.log(arr); --> [1,2,3]
console.log(arr1); -->[1,2,3]
1)定义一个数组,在栈里面申请一个房间"arr", 在堆里面存放值[1,2], 此时栈存放的是堆的地址"heap1001"
2)申请一个新房间’‘arr1’’,拷贝"arr1"里面的地址,此时两个房间都指向一个堆。因此当’‘arr’'添加一个数值后,“arr1”也会跟着变。
3)当"arr"重新赋值[1,3]后,会在堆内存里重新申请一个房间。此时栈内存的地址发生改变。
var arr = [1,2];
var arr1 = arr;
arr = [1,3];
console.log(arr); -->[1,3]
console.log(arr1); -->[1,2]
4、语法错误
(1)低级错误(语法解析错误 SyntaxError)
通篇扫描一遍,一行都执行不了
(2)逻辑错误(ReferenceError)
错误语句后面不会再执行
(3)js语法错误
两个代码块会相通,但一个出错后,不会影响其他代码块。