JS的从头学习
## 假期篇
### 三大核心:
ECMAScript:执行标准化javascript的基本语法结构
BOM
DOW
### JS的书写方式
行内式:a标签 ,非a标签
<a href="javascript:alert('hello javascript!!!')">奥利给</a>
外链式
<script src="./js/hsow.js"></script>
嵌入式:
<script>
//javascript 语句;
</script>
### JS的输出语法
alert() 弹出信息
console.log() 输出普通信息 在控制台输出
document.white()用于在页面中显示输出的内容
### js的注释
单行注释
//这是单行注释
console.log("单行注释")
多行注释
```javascript
/* 这是多行注释
* 可以有很多行
*
*
/
console.log("多行注释")
### JS的变量
一个名字来代表一个值
在运算的过程中,用来保存一个中间变量
语法:var变量名=值
<script>
var my_name;
var pages,list_number,$num_2028
var my_name="河南"
</script>
### JS的数据类型
基本数据类型
number数值
<script>
// 整数
var u_age = 18;
// 浮点数
var u_height = 1.75;
// 浮点数(双精准)
var u_eyes = 0.12345678;
// 正数
var p_number = +1;
// 负数
var n_number = -1;
// 支持科学计数法格式
var f_number = 3.14E6; // 3.14*10^6
var f_number2 = 3.14E-6; // 3.14*10^-6
// NaN
var box = 0/0;
var box2 = 12/0 * 0;
console.log(box,box2);
// 也可以通过 isNaN() 函数来判断是否是一个数字Number
// ECMAScript提供isNaN()函数,用来判断这个是不是NaN。
// isNaN()函数在接收到一个值后,会尝试将这个值转换成数值。
// isNaN的值是true 表示这不是一个数字,false表示是一个数字
console.log(isNaN(1)); // false
console.log(isNaN("123")); // false
console.log(isNaN("hello world")); // true
</script>
string字符串
// 1. 定义了一个名字 t_name 被 var 修饰,这是一个变量 此时默认是undefined,特殊数据类型
var t_name;
// 2. 赋值 JavaScript是根据 等号 = 右边的值进行数据类型的判定
t_name = "Tony"; // 此时 t_name 才是 String 字符类型 双引号
// 3. 验证 t_name 的类型
console.log(t_name); // 打印 t_name
console.log(typeof(t_name)); // 使用typeof 进行类型判断
// 4. 定义了一个名字为user_id 被var 修饰,根据等号 右边的值,user_id 被判定为字符类型
var user_id = '111111111111111111'; // 单引号
console.log(user_id);
console.log(typeof(user_id));
// 5. 双引号 和 单引号 建议使用 外双内单的方式。
var a_word = "' just do it ' no zuo no die why you try,you try you die don't ask why";
var b_word = '" let it go " no zuo no die why you try,no try no high give me five';
console.log(a_word, b_word);
// 6 转义
var who_am_i = "I\'m a good man.";
var day_1111 = "双\"11.11\"购物狂欢!!!";
var table_header = "\t第一列\t第二列\t第三列\t第四列";
var table_body1 = "\t星期一\t西红柿\t土 豆\t番茄";
var table_body2 = "\t星期二\t茄 子\t黄 瓜\t扁豆";
console.log(table_header);
console.log(table_body1);
console.log(table_body2);
</script>
Boolean 布尔
<script>
var yes_val = true;
var no_val = false;
</script>
undefined 空
null 空
NaN=Not a number
#### 复杂数据类型
未完待续
### 变量命名规则和命名规范
#### 规则
只能有字母 数字 下划线 美元符 组成
不能有数字开头
严格区分大小写
不能使用关键字和保留字
#### 规范
不能使用中文
变量语义化
驼峰命名法
### 数据类型的检测
typeof 关键字
typeof 变量
typeof(变量)
### 数据类型转换
#### 转数值
Number()
parseInt()
parseFalse()
去正负值
非加法的数学运算
#### 转字符
String()
toString()
加号进行字符串拼接
#### 转布尔
Boolean()
### 运算符
#### 数学运算符
%
+
-
*
/
<script>
alert(1+1);
alert(2*3);
alert(2-1);
alert(5/1);
</script>
#### 赋值运算符
=
+=
-=
/=
%=
</body>
<script>
// 1. = 号赋值符
var y = 10;
var x = y ;
console.log(x,y);
// 2 +=
x += y;
console.log(x,y);
// 3. -=
x -= y;
console.log(x,y);
// 4. *=
x *= y;
console.log(x,y);
// 5. /=
x /= y;
console.log(x,y);
// 6. %=
x %= y;
console.log(x,y);
</script>
#### 比较运算符
>
<
>=
<=
==
!=
!==
<script>
// 1. ==
console.log(1 == 1);
console.log(1 == 2);
console.log(1 == "1");
// 2. ===
console.log(1 === "1");
console.log("1" === "1");
// 3. !=
console.log(1 != 1);
console.log(1 != 2);
console.log(1 != "1");
// 4. !==
console.log(1 !== 1);
console.log(1 !== "1");
console.log("1" !== "1");
// 5. >
console.log(1 > 1);
console.log(2 > 1);
// 6. <
console.log(1 < 1);
console.log(2 < 1);
// 7. >=
console.log(1 >= 1);
console.log(2 >= 1);
// 8. <=
console.log(1 <= 1);
console.log(2 <= 1);
// 9. 经典面试题
// 0.1 + 0.2 与 0.3 比较的结果
console.log(0.1 + 0.2);
// 将0.1转换成二进制
console.log(0.1.toString(2)); // 0.0001100110011001100110011001100110011001100110011001101
// 将0.2转换成二进制
console.log(0.2.toString(2)); // 0.001100110011001100110011001100110011001100110011001101
</script>
#### 逻辑运算符
&&
||
!
script>
// 1. && 逻辑与
console.log(true && true);
console.log(false && false);
console.log(true && false);
console.log(5 && 4);//当结果为真时,返回第二个为真的值4
console.log(0 && 4);//当结果为假时,返回第一个为假的值0
console.log((1 > 2) && (2 > 3));
console.log((1 < 2) && (2 < 3));
// 小结:
/*
&& 逻辑与 (充分必要)
1.1 两边条件都为true时,结果才为true;
1.2 如果有一个为false,结果就为false;
1.3 当第一个条件为false时,就不再判断后面的条件
1.4 数字对比,非0即为真
*/
// 2. || 逻辑或
console.log(true || true);
console.log(false || false);
console.log(true || false);
console.log(5 || 4);//当结果为真时,返回第二个为真的值4
console.log(0 || 4);//当结果为假时,返回第一个为假的值0
console.log((1 > 2) || (2 > 3));
console.log((1 < 2) || (2 < 3));
// 小结:
/*
|| 逻辑与 (既不充分又不必要)(或者)
2.1只要有一个条件为true时,结果就为true;
2.2当两个条件都为false时,结果才为false;
2.3当一个条件为true时,后面的条件不再判断
*/
// 3. ! 取相反
console.log(!true);
console.log(!false);
console.log(!0);
console.log(!10);
// 小结:
/*
! 取反
3.1 当条件为false时,结果为true;反之亦然。
*/
</script>
#### 自增自检运算符
++
–
### 分支语句
#### if语句
if(){}
if(){}else{}
if(){} else () {}
if() {} else if () {} else {}
<script>
// 1. 声明函数
function checkUserAge() {
// 2. 获取 id 为 user_age 的input
var get_el_input = document.getElementById("user_age");
// 3. 取得 input 对应的value, 并通过parseInt()将字符串转换成整数
var get_el_value = parseInt(get_el_input.value);
console.log(get_el_value);
// 4. 判断年龄
console.log("开始");
if ( get_el_value < 18) {
console.log("还小,未成年!!");
}
if ( get_el_value > 6 && get_el_value < 18) {
console.log("我还是曾经的那个少年!!!😎");
}
if ( get_el_value > 255 || get_el_value < 0 ) {
console.log("未成人或不可能!!!!");
}
if ( get_el_value == 18 || get_el_value > 18 && get_el_value <= 30) {
console.log("成人了,可以成家立业了!!!");
}
console.log("结束");
}
</script>
#### switch语句
switch (变量{
case 情况1 : 情况1满足的代码
break
case 情况2 : 情况2满足的代码 break
default 所有情况都不满足的时候执行的代码
<script>
// 1. 声明函数
function checkScore() {
// 2. 获取 id 为 user_age 的input
var get_el_input = document.getElementById("user_score");
// 3. 取得 input 对应的value, 并通过parseInt()将字符串转换成整数
var get_el_value = parseInt(get_el_input.value);
console.log(get_el_value);
// 4. 判断成绩段位
var score_level = parseInt(get_el_value / 10); // 100分制
switch (score_level) {
case 10:
case 9:
console.log("优秀!!!");
break;
case 8:
console.log("良好,需要继续加油!!!");
break;
case 7:
console.log("中等!!!");
break;
case 6:
console.log("及格!!!");
break;
default:
console.log("不及格,重修!!!");
break;
}
}
</script>
#### 注意
注意1、case和变量只能是===的关系才能满足
注意2.只能判断1个准确值 不能判断范围
3。break可以不写 不写会向下穿透
4。break穿透从第一个满足条件的case开始穿透
5。default 可以不写 不写就是所有条件都不满足的时候 没有代码执行