var a = "10"; console.log(typeof a); // string var b = 10; console.log(typeof b); // number var c = 3.14; console.log(typeof c); // number var d = true; console.log(typeof d); // boolean 有且只有两个值:true、false var e = null; console.log(typeof e); // object var f; console.log(typeof f); // undefined 有且只有一个值:undefined
字符串
在 JavaScript 中,单引号和双引号都表示字符串。
1 2 3 4
var a = "hello"; console.log(typeof a); // string a = 'a'; console.log(typeof a); // string
在 ES6 之后,推出了以反引号表示的字符串,称之为模板字符串,它有以下特点:
可以使用 ${} 来获取字符串外部的变量的值
可以在字符串中接受回车、换行、制表等特殊符号
1 2 3 4 5 6 7 8 9 10 11 12 13 14
var x = 6; var y = 7;
// 反引号中,允许使用 ${} 表达式来获取字符串外部的变量的值 var a = `${x} x ${y} = ${x * y}`;
console.log(a); // 单引号需要通过字符串拼接得到想要的输出数据 var s = x + ' x ' + y + ' = ' + x * y; console.log(s);
var a = `hello world`; console.log(a); //输出结果也会换行
数字
无穷大 Infinity
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 代表的是一个无穷大的数字 var a = Infinity; console.log(a); console.log(typeof a); // number
// 在js中允许除数为零, 其结果是无穷大 var b = 10 / 0; console.log(b); //Infinity
// 无穷大和无穷大是相等的 console.log(a === b); //true console.log(a === b + 1); //true console.log(a === b + 100); //true console.log(a === b + Infinity); //true
var a = 10; if (a % 2 == 0) { console.log("偶数"); } elseif (a % 7 == 0) { console.log("7的倍数"); } else { console.log("奇数"); }
循环语句
循环输出 1— 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// for循环 for (let i = 1; i < 11; i++) { console.log(i); }
// while循环 var i = 1; while (i < 11) { console.log(i); i++; }
// do ... while循环 i = 1; do { console.log(i); i++; } while (i < 11);
九九乘法表
如果积比 10 小,则前位补零,例如:2 x 2 = 04。
每个计算表达式使用制表位分隔。
1 2 3 4 5 6 7 8 9
for (let x = 1; x < 10; x++) { // 行 let s = ""; for (let y = 1; y <= x; y++) { // 列 let z = x * y; z = (z < 10 ? "0" : "") + z; s += `${x} x ${y} = ${z} `; } console.log(s); }
<divid="d"></div> <script> var dom = ""; for (let x = 1; x < 10; x++) { dom += "<div>"; for (let y = 1; y <= x; y++) { let z = x * y; // 前位补零 z = (z < 10 ? "0" : "") + z; dom += `<span>${x}x${y}=${z}</span>`; } dom += "</div>"; } d.innerHTML = dom; </script>
字符串函数
charAt
charAt 用于获取字符串中指定下标位置的字符。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 0123456789 var a = "hello world";
// 获取下标为 1 的字符 console.log(a.charAt(1)); //e
// length 用于获取字符串的长度 console.log(a.length); //11
// 遍历字符串,挨个获取所有的字符 for (let i = 0; i < a.length; i++) { let c = a.charAt(i); console.log(c); }
indexOf 和 lastIndexOf
查找指定字符串第一次出现的位置的下标。
1 2 3 4 5 6 7 8 9 10 11 12 13
var a = "hello world";
// 从左往右查找指定的字符串,并返回其下标 var i = a.indexOf("l"); console.log(i); // 2
// 从右往左查找指定的字符串,并返回其下标 i = a.lastIndexOf("l"); console.log(i); // 9
// 如果返回的是 -1, 则说明不存在字符 z i = a.indexOf("z"); console.log(i); // -1
substr 和 substring
按下标切割字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13
var a = "hello world";
// 从 from 开始截取,截 length 个字符。 如果没有 length 参数,则一直截取到末尾 // substr(from: number, length?: number) var s = a.substr(3, 2); // 从 3 开始,截取两个字符 console.log(s); //lo
// 从 start 开始截取,截到 end 结束 // 截取的字符串,包含开始不包含结束 // 如果没有 end 参数,则截取到末尾 // substring(start: number, end?: number) s = a.substring(3, 6); // 从 3 开始,截到 6(不含6) console.log(s); //lo
split
按照指定的字符进行字符串切割。
1 2 3
var a = "1,2,3,4,5"; var ns = a.split(","); console.log(ns); //['1', '2', '3', '4', '5']
var lc = a.toLowerCase(); console.log(lc); // hello
var uc = a.toUpperCase(); console.log(uc); // HELLO
小练习
1
现存在字符串 var s = " hello! I'm timor. "。试去除字符串中的前后空格,并将每个单词的首字母转大写 (不使用 split)。将调整之后的字符串显示到网页上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<div id="d"></div>
<script> var s = " hello! I'm timor. "; for (let i = 0; i < s.length; i++) { let c = s.charAt(i); if (c === " ") { // 说明查找到了空格 //空格的下标是 i,则[0, i + 1) 全部保留,下标为 i + 1 的变大写,[i + 2, 末尾) 全部保留 s = s.substring(0, i + 1) + s.charAt(i + 1).toUpperCase() + s.substr(i + 2); } } d.innerText = s.trim(); </script>
2
查询字符串 var s = "http://baidu.com/s?wd=你好李焕英&ie=utf-8;" 网址中,问号及其后面的部分被称之为查询字符串。对于一个网址,查询字符串的键是确定的,值是不确定的,如何获取 s 中键为 wd 的值。
1 2 3 4 5 6
var s = "http://baidu.com/s?wd=你好李焕英&ie=utf-8"; var i = s.indexOf("?wd="); s = s.substr(i + 4); i = s.indexOf("&"); s = s.substring(0, i); console.log(s);
<style> div { width: 100px; height: 100px; } </style>
<divid="d"style="background-color: red;" ></div>
<script> // 每隔 1s 为这个正方形随机设置一个颜色 var js = ` var r = Math.floor(Math.random() * 255); var g = Math.floor(Math.random() * 255); var b = Math.floor(Math.random() * 255); d.style.backgroundColor = "rgb(" + r + "," + g + "," + b + ")"; `; setInterval(js, 1000); // 每隔 1s 增加这个正方形的边框半径 var jsc = ` var r = d.style.borderRadius; // 将边框半径的字符串形式转换为数字形式 r = parseInt(r); // 如果 r 是非数字,则设置为 0 r = isNaN(r) ? 0 : r; r++; d.style.borderRadius = r + "px"; `; setInterval(jsc, 1000); </script>