1、js最好使用script标签引入
<script src="js/index.js"></script>
2、引入script的位置最好是在body标签结束之前
3、输入与输出
alert():弹窗
prompt(): 输入弹窗
document.write():将内容写入网页进行展示
console.log(); 在控制要输出,一般用于调试
4、创建变量(变量声明)
>> 通过 var 关键字声明变量
var 变量名;
var 变量名=变量值;
注意:变量没有类型限制,可以随时赋予任意的一个值。
var a = 'abc';
a = 123;
5、变量命名规则
* 变量由 字母、数字和符号(只能是下划线或者美元符号)组成;
* 首字符不能是数字,一般建议字母开头;
* 区分大小写;
* 小驼峰式写法(第二个单词开始首字母大写);
* 不能使用关键字和保留字;
6、基本数据类型
>> 字符串类型(String):
var str = 'abc'; // 单双引号都可以
var strNum = '123';
>> 数值类型(Number):
var num = 123; // 由阿拉伯数字组成,不需要加引号
* 十进制:常用
* 八进制:以 0 开头的数字 017
* 十六进制:以 0x 开头的数字,如:0xF
* 二进制:由 0 与 1 组成的数字
浮点数精度问题(浮点数就是小数):
二进制浮点数不能精确的表示类似 0.1 这样的数字的。
>> 布尔值类型(Boolean):
只有两个值 true 和 false
var bool = true;
>> 未定义(Undefined):
表示缺少值。
>> 空(Null):
代表没有对象。可以用于销毁变量。
7、引用数据类型 -- 对象(Object)
var student1 = {
name: 'jack',
age: 18,
grade: '大一',
sex: '男',
child: {}
}
>> 对象结构:
var 变量名 = {
属性名: 属性值, // 属性值可以是任意数据类型(undefined 和 null 没有意义)
属性名: 属性值
...
}
8、数据类型检测
typeof 变量;
var str = 'hello';
var num = 0;
var bool = true;
var u;
var n = null;
var obj = {
name: 'jack'
}
console.log('typeof str:', typeof str); // string
console.log('typeof num: ', typeof num); // number
console.log('typeof bool: ', typeof bool); // boolean
console.log('typeof u: ', typeof u); // undefined
console.log('typeof n: ', typeof n); // object
console.log('typeof obj: ', typeof obj); // object
说明:Null 和 Object 都会返回 object,底层都是用 二进制 表示,
在 JS 中二进制前三位都为 0 的话就会判断为 object 类型,Null 的二进制表示全都是 0。
9、隐式转换
var n1 = true;
var n2 = 'true';
console.log(n1 == n2); // 两个 = 代表相等
var s1 = '123';
var s2 = 123;
console.log(s1 == s2);
var s3 = '123';
var n3 = 123;
var z = s3 + n3;
console.log(z, typeof z);
10、强制转换
主要是 Number() 、String()、Boolean() 三个函数的使用。
>> 布尔值的转换:
Boolean(变量);
>> 字符串转化:
String(变量)
console.log(String(str));
console.log(String(num)); // '123'
console.log(String(bool)); // 'true'
console.log(String(obj)); // '[object Object]'
变量.toString():不可以转 Null 和 Undefined
console.log(typeof num.toString());
>> 转数值:
Number(变量)
* 如果是数值类型,会保留小数点;
* 如果是字符串则转为 NaN;
* 布尔值 true 转为1,布尔值 false 转为0
* 对象是 NaN;
* NaN(not a number)不是数值,NaN 与 NaN 不相等
parseInt()
* 如果是数值,直接截取小数点前的整数;
* 如果是字符串,则从左往右一个一个解析,遇到非数字则停止解析。
parseFloat()
* 如果是数值,会保留小数点;
* 如果是字符串,则从左往右一个一个解析,遇到非数字则停止解析。
11、算术运算符
>> ++ 的理解:
* 在没有赋值操作的时候,++ 放在变量前面和放在变量后面是一样的;
* 如果++放在了变量的前面,先对变量+1,然后再执行当前这行代码;
* 如果++放在了变量的后面,则是先执行当前行代码,完成后对变量进行+1;
拼接符
加号 不同于其他的几个符号:
* 运算中只要有一方是字符串,就会把另外一方也转为字符串,然后连接在一起;
* 但是 -、*、/ 运算中,只要一方是数字,另一方就会转为数字;
赋值运算符:=、+=、-=、*=、/=。+-*/的简写。
关系运算符
== // 判断前后两个数据是否相等
=== // 判断前后两个数据是否全相等,值与数据类型都是一样的
!= // 不相等
!== // 完全不相等
>
<
>=
<=
逻辑运算符
&& // 与,同时
|| // 或,二选一
! // 非,即相反
优先级
* 逻辑非 优先级最高;
* 其次是算术运算符;
* 然后是关系运算符;
* 然后是 逻辑与 、逻辑或;
* 最低是赋值运算符;
通过加 () 可以调整优先级。
三元运算符
>> 语法:
条件 ? 条件 true 执行的表达式 : 条件 false 执行的表达式;
简单讲就是 2 选 1;