一、JavaScript 简介
JavaScript 是一种轻量级,解释性或即时编译的编程语言。
* JavaScript 直接写入HTML输入流
document.write("<h1> This is a title </h1>");
* JavaScript 对事件的反应
<button onclick="submitForm()">Submit</button> <script type="text/javascript"> function submitForm() { alert("Submit some infomation") } </script>
* JavaScript 修改HTML内容
<button id="submit_btn" onclick="submitForm()">Submit</button> <script type="text/javascript"> function submitForm() { let btn = document.getElementById("submit_btn"); btn.innerHTML = "New submit text"; } </script>
* JavaScript 改变HTML样式
<button id="submit_btn" onclick="changeBackgroundColor()">Submit</button> <script type="text/javascript"> function changeBackgroundColor() { let btn = document.getElementById("submit_btn"); btn.style.backgroundColor = "blue"; } </script>
二、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) 比特位,右边用0填充。
有符号右移: >> a>>b 将 a 的二进制表示向右移 b
(< 32) 位,丢弃被移出的位。
有符号右移: >>> a>>>b 将 a 的二进制表示向右移 b
(< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。
* 负数的二进制如何表示?
* 负数的表达形式是正值的补码 *
原码: 一个整数绝对值的二进制表示,成为原码
反码:将二进制数按位取反,所得的数为原码的反码
补码:反码加1则为补码