一、JavaScript 简介
JavaScript 是一种轻量级,解释性或即时编译的编程语言。
* JavaScript 直接写入HTML输入流
document.write("
This is a title
");* JavaScript 对事件的反应
Submit
function submitForm() {
alert("Submit some infomation")
}
* JavaScript 修改HTML内容
Submit
function submitForm() {
let btn = document.getElementById("submit_btn");
btn.innerHTML = "New submit text";
}
* JavaScript 改变HTML样式
Submit
function changeBackgroundColor() {
let btn = document.getElementById("submit_btn");
btn.style.backgroundColor = "blue";
}
二、JavaScript 输出
JavaScript 的输出共有 4 种
* window.alert() 浏览器弹出警告框
* document.write() 将输出写在HTML中
* innerHTML 写入到元素中
* console.log() 控制台输出
三、JavaScript 运算符
1_ 算术运算符
加法: + 减法: - 除法: / 乘法: * 取余: %
幂: **
0**1 // 0的1次幂
0
3**2 // 3的平方
9
5**3 // 5的立方
125
递增: ++ 递减: --
a = 1
a++
1
a
2
++a
3
a++ // 递增放在后面,先输出a的值,之后对a进行 加1的运算
++a // 递增放在前面,先对a进行 加1运算,之后输出a运算后的结果值
递减同理
一元负号: - 一元正号: +
一元负号运算符位于操作数前面,并转换操作数的符号。
一元正号运算符位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值。
尽管一元负号也能转换非数值类型,但是一元正号是转换其他对象到数值的最快方法,也是最推荐的做法,因为它不会对数值执行任何多余操作。
它可以将字符串转换成整数和浮点数形式,也可以转换非字符串值 true,false 和 null。小数和十六进制格式字符串也可以转换成数值。负数形式字符串也可以转换成数值(对于十六进制不适用)。如果它不能解析一个值,则计算结果为 NaN。
+12 // 12
+"23" // 23
+"1.0" // 1
+"1.05" // 1.05
+"A" // NaN
+true // 1
+false // 0
+null // 0
+function(val){ return val;} //NaN
2_ 数组推导式
* 对数组的遍历我们可以使用map、filter、剪头函数或者展开语法 来进行运算
a = ["ASD", "666", "ECC", "BCC"]
a.map((item, index) => {return item+index}) // 不会修改原数组,返回值是一个数组
["ASD0", "6661", "ECC2", "BCC3"]
a.filter((item) => { return item != "ASD" }) // 不会修改原数组,返回值是一个数组
["666", "ECC", "BCC"]
[...a, "QQQ"] // 展开语法可以将数组作为新数组的一部分
["ASD", "666", "ECC", "BCC", "QQQ"]
function sum(A,B,C,D) { return A+B+C+D; }
sum(...a) // "ASD666ECCBCC"
* for in VS for of
for in 和 for of 可以对数组进行便利,但是个人尝试了一下 for in 同时可以遍历对象
--------------------- 遍历对象 ----------------------------
a = { AQ: '25', BQ: '36', CQ: '47' }
for( item in a) console.log(item) // 返回对象的Key
AQ
BQ
CQ
for( item of a) console.log(item) // for of 不能对对象进行便利
Uncaught TypeError: a is not iterable
--------------------- 遍历数组 ----------------------------
a = ["ASD", "666", "ECC", "BCC"]
for( item in a) console.log(item) // for in 返回的是数组的下标
0
1
2
for( item of a) console.log(item) // for of 返回的是数组中的每一个元素
ASD
666
ECC
3_ 位运算符
按位与: & a & b 两个操作数相应的比特位都是1时,结果才为1,否则为0。
按位或: | a | b 两个操作数相应的比特位至少有一个1时,结果为1,否则为0。
按位异或: ^ a ^ b 当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。
按位非: ~ ~a 反转操作数的比特位,即0变成1,1变成0
左移: <
有符号右移: >> a>>b 将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位。
有符号右移: >>> a>>>b将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。
*负数的二进制如何表示?
*负数的表达形式是正值的补码*
原码:一个整数绝对值的二进制表示,成为原码
反码:将二进制数按位取反,所得的数为原码的反码
补码:反码加1则为补码