1. JS编写位置
(1)在标签的属性中(属于结构与行为耦合,不推荐使用)
<button onclick=" alert('在这里'); ">点我看看</button> <a href=" javascript: alert('在这里'); ">点我看看</a>
(2)在script标签中 (在<head>或<body>中)
<script> alert("我在这里"); </script>
(3)外部js文件
// html文件中引入js文件 <script type="text/javascript" src="./test.js"></script>
2. 格式
- 注释:/* */
- JS严格区分大小写
- JS以分号结尾
- JS会忽略多个空格和换行
3. cookie 和 session
- cookie 数据存放在客户浏览器上,session数据放在服务器上
- cookie不安全,保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
- session在一定时间内保存在服务器上。访问增多,会比较占用服务器的性能
4. 字面量和变量
- 字面量:不可改变的值,如1,2,3。可以直接使用,但一般不直接用
- 变量:可用来保存字面量
- 声明变量用 var ,未赋值显示undefined。如 var a = 123;
5. 标识符
- 可以由我们自主命名,例:变量名、函数名、属性名
- 命名规则
- 可以含有字母、数字、“_” 、“$”
- 不能以数字开头
- 不能是ES中的关键字或保留字
- 一般采用驼峰命名法
6. 数据类型
(1)String:用单引号或者双引号均可,但不可以嵌套使用,如 var a = "today";
(2)Number:超过最大/最小值时返回 Infinity 或 NaN(Not a Number)。若 a = Infinity 或 NaN ,a均为Number类型。整数运算基本可以保证精确,浮点数可能不精确
(3)Boolean
(4)Null:var a = null; 定义空对象,typeof返回Object
(5)undefined:var a; 或 var a = undefined; 为未赋值返回undefined
(6)Object
PS:typeof 返回检查类型( console.log(typeof(a)) )
7. 强制转换
- string转换
- String(a); // Number 和Boolean 使用String() 相当于调用toString方法,而 null 和 undefined 是直接转换成字符串“null”和“undefined”
- a.toString(); // null 和 undefined 没有toString方法,会报错
- number转换
- Number(a);
- 字符串 => 数字 ①"123" => 123 ②非数字(如 "123px")=> NaN ③空串或空格串 => 0
- Null => 数字 为 0
- Undefined => 数字 为 NaN
- parseInt();
- 将字符串转为整数,"123.3px" =>123,"b12p" => NaN。parseInt( a, 8 ) 中第二位8表示八进制
- parseFloat();
- 将字符串转为浮点数,"123.3px" => 123.3
- Number(a);
- Boolean转换
- 数字除了 0 和 NaN,其余均为true( 包括Infinity也为true )
- 字符串除了空格其余均为true
- null 和 undefined 均为false
- 对象类型也为true
- PS:parseInt 和 parseFloat 对非String类型使用会先转为String类型再进行转化,即 null => NaN
8. 其他进制
- 十六进制:0x开头
- 八进制:0开头
- 二进制:0b开头(非所有浏览器都支持)
9. 算术运算符
- +(加)、-(减)、*(乘)、/(除)、%(取余)
- +:
- 非数字转为数字,false+true = 0+1 = 1
- 任何值和字符串相加,均转为字符串,再做拼串处理
- 任意的数据类型 +“”,均转为String类型
- 除了加法转字符串,其余运算符字符串均转Number
- 可以通过一个值 -0,*1,%1,/1转换为Number类型,原理同Number(),使用更加方便
10. 一元运算符
- +(正)、-(负)
- 正号不会有影响、负号取反
- 对于非Number值,会转成Number再算
- 可以对其他数据类型用+转为Number
11. 自增、自减
- ++a
- a++
- --a
- a--
- ++ 或 -- 写在变量前面是先自增后运算,写在后面是先运算后自增
- 例:var a = 20; console.log( a++ ); console.log( a ); 第一个输出a的值为20,第二个为21
- 例:var a = 20; a = a++ + ++a + a; a的值为64
12. 与(&&)或(||)非(!)
- 运算时先转为布尔值,再运算,并返回原值
- &&
- true + true = true,返回后面的值,如 a = 5 && 6; a=6
- false + false = false,返回前面的值,如 a = NaN && 0; a=NaN;
- true + 其他,必然返回第二个值
- false + 其他,必然返回第一个值
- ||
- 如果第一个值为true,必然返回第一个值
- 如果第一个值为false,必然返回第二个值
13. 关系运算符
- > < == >= <= != === !==
- 若两边均为字符串,一个字符一个字符比较
- PS:undefined == null => true,因为 undefined 衍生自 null
- 可以通过 isNaN() 来判断是否为NaN,NaN不和任何值相等,包括他本身
14. 语句块
- 可以用 { } 来为语句分组,称为代码块。要么一起执行,要么一起不执行
- 代码块只有分组作用,不会影响内外情况
浙公网安备 33010602011771号