引入
- 页面内嵌:在
<head>
或<body>
中嵌入javascript <script type="text/javascript"></script>
- 外部引入:在
<head>
或<body>
中写<script type="text/javascript" src="[文件地址]"></script>
注:
-
type="text/javascript"
忘了不会写,就不用写了。如果写错了JS代码或者引入文件不执行。 - 不要即引入外部的,又在内部写代码,这样内部代码就失效了。
<script type="text/javascript" src="lesson-1.js">
console.log("Hello world") //将不会执行。
</script>
变量(variable)
变量声明
var a = 123
/*
* =(赋值符号),在这里不是等于号,而是把数字123赋值给了a.
*/
单一var模式
//多个变量声明
//赋值不赋值都行,但是要用逗号隔开。
var a = 1,
b = 2,
c = 3,
d = 4,
e;
console.log(a) //1
//
var test = 10;
test = 20;
console.log(test); //20
//后面的test 20覆盖了前面的test 10
命名规则
- 变量必须以字母开头,$ 和 _ 符号开头(
var _test = 123
) - 变量名称对大小写敏感(
var a = 123
和var A = 123
是不同的变量,函数同理) - 不可使用系统的关键字、保留字作为变量名
- 变量起名语义化
值类型 —— 数据类型
JavaScript 拥有动态类型
不可改变的原始值(栈数据)
-
Number
数字类型 小数点可带可不带 -
Boolean
布尔值 返回两个值true或者false -
String
字符串 一对双引号或者单引号括起来 -
Undefined
定义未赋值,返回undefined。 -
Null
通过将变量的值设置为 null 来清空变量
var a = 123,
b = "字符串",
c = true,
d = undefined,
e = null;
console.log(typeof a); // Number
console.log(typeof b); // String
console.log(typeof c); // Boolean
console.log(typeof d); // Undefined
console.log(typeof e); // Object
//typeof 检测返回数据类型
引用值(堆数据)
-
array
数组 -
Object
对象 -
function
方法 -
date
日期 -
RegExp
正则表达式
栈内存 stack
栈内存和栈内存之间的赋值是拷贝,互相不影响。
var a = 100;
var b = a;
a = 200;
console.log(b) //100
堆内存 heap
栈内存中存放地址指向堆内存中的对象。(如下图的m n变量)
var arr = [1,2,3]; // 栈内存的变量arr指向堆内存[1,2,3]对象地址
var arr1 = arr; // 在栈内存拷贝一个arr1,同样指向堆内存[1,2,3]的地址
arr.push(4); //插入4
console.log(arr1) // [1,2,3,4]
console.log(arr == arr1) //true
栈、堆内存总结:
栈内存 | 堆内存 |
---|---|
存储基础数据类型 | 存储引用数据类型 |
按值访问 | 按引用访问 |
存储的值大小固定 | 存储的值大小不定,可动态调整 |
由系统自动分配内存空间 | 由程序员通过代码进行分配 |
主要用来执行程序 | 主要用来存放对象 |
空间小,运行效率高 | 空间大,但是运行效率相对较低 |
先进后出,后进先出 | 无序存储,可根据引用直接获取 |
运算符
运算操作符
- "
+
"
数学运算,字符串链接;
var num = 1 + 1;
console.log(num); //2
任何数据类型加上字符串都等于字符串。
var str = 1 + "abc";
console.log(str); //1abc
- "
-
" 减法,"*
" 乘法,"/
" 除法,"%
" 求余数(依旧不懂),"=
" 赋值,"()
" 括号 - 凡是应该得出一个数字的类型的值,又无法表示的,就返回
NaN
(Not a Number),NaN
也是Number
类型 - 优先级 "
=
" 最弱,"()
" 最高 - "
++
" 加加
var a = 10;
a++; //a++ 就等于 a = a + 1
console.log(a) //11
"--
" 减减
var a = 10;
a--; //a-- 就等于 a = a - 1
console.log(a) //9
"++"和"--"放前后都可,放后面:先执行语句,后++或--;放前面:先++或--,再执行语句。
//放后面
var a = 10;
console.log(a++) //10
//放前面
var b = 20;
console.log(++b) //21
//
var a = 10;
var b = ++a - 1 + a++;
console.log(b); // 21
console.log(a); // 12
"+=
" 加等于
var a = 10;
a += 10; // 等于 a = a + 10,等于写了十次a++
console.log(a) // 20
"-=
" 减等于
"*=
" 乘等于
"/=
" 除等于
上面三个与"+=
"用法相同。
"%=
" 余等于 (依旧不懂)