JavaScript 能够以不同方式“显示”数据:
- window.alert() 写入警告框
- document.write() 写入 HTML 输出(在 HTML 文档完全加载后使用 document.write() 将删除所有已有的 HTML ,一般仅用于测试)
- innerHTML 写入 HTML 元素
- console.log() 写入浏览器控制台
运算符:
- 比较运算符: ==等于 ===等值类型 !=不相等 !==不等值或不等型 ?三元运算符
- 逻辑运算符: && || !
- 类型运算符:typeof 返回变量的类型 instanceof 返回 true,如果对象是对象类型的实例。
- 位运算符: 位运算符处理 32 位数,该运算中的任何数值运算数都会被转换为 32 位的数。结果会被转换回 JavaScript 数。
- JavaScript 运算符优先级值:https://www.w3school.com.cn/js/js_arithmetic.asp
数据类型:
- 当数值和字符串相加时,JavaScript 将把数值视作字符串。(从左向右计算表达式)
- 动态类型--->相同变量可用作不同类型
- 没有值的变量,其值是 undefined;null 的数据类型是对象。空值与 undefined 不是一回事。空的字符串变量既有值也有类型。任何变量均可通过设置值为 undefined 进行清空。其类型也将是 undefined。可以通过设置值为 null 清空对象。Undefined 与 null 的值相等,但类型不相等:
- 原始数据值是一种没有额外属性和方法的单一简单数据值。 ypeof 运算符可返回以下原始类型之一:string number boolean undefined
- 复杂数据 typeof 运算符把对象、数组或 null 返回 object;另外一种返回为function
函数:
- 访问没有 () 的函数将返回函数定义,方法实际上是以属性值的形式存储的函数定义。
- 局部变量在函数开始时创建,在函数完成时被删除。
- 在函数定义中,this 引用该函数的“拥有者”。
对象:
- 不要把字符串、数值、布尔值声明为对象(不要用过New关键字来声明)
- 对象无法比较 (==或===都为false)
事件:
常见的HTML事件:onchange,onclick,onmouseover,onmouseout,onkeydown,onload
字符串:
- \b退格 \f 换页 \n新行 \r回车 \t水平制表符 \v垂直制表符(用于打印等,在html中无意义)
- 字符串查找:indexOf()---可以设置第二个开始位置参数。 search()---可以设置正则表达式
- 提取字符串:
- slice(start, end) ---如果某个参数为负,则从字符串的结尾开始计数
- substring(start, end) ----无法接受负的索引
- substr(start, length) ---第二个参数规定被提取部分的长度,如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分。
4. 替换字符串:replace() 方法不会改变调用它的字符串。它返回的是新字符串,默认只替换首个匹配(/g匹配全部),大小写敏感(/i改为不敏感)
5. 大小写转换:toUpperCase() toLowerCase()
6. 连接字符串:concat(),相当于+ 返回新字符串,不改变原来的
7. trim() 方法删除字符串两端的空白符:
8. 提取字符串字符:charAt() 方法返回字符串中指定下标(位置)的字符串,charCodeAt() 方法返回字符串中指定索引的字符 unicode 编码。
9. 允许对字符串进行属性访问,但是不靠谱,不推荐
10. 把字符串转换为数组:split() 接分隔符
数字:
- JavaScript数字始终是64位浮点数 (其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号)
- 浮点的算数并不总是 100% 精准(可用乘除解决)
- JavaScript 的加法和级联(concatenation)都使用 + 运算符。数字用加法。字符串用级联。
- NaN :非数值,属于 JavaScript 保留词,指示某个数不是合法数。函数 isNaN() 来确定某个值是否是数。NaN 是数,typeof NaN 返回 number
- Infinity: 在计算数时超出最大可能数范围时返回的值。除以0会得到infinity,typeOf Infinity 返回 number
- 不要用前导零写数字,一些 JavaScript 版本会把带有前导零的数解释为八进制。能够使用 toString() 方法把数输出为十六进制、八进制或二进制myNumber.toString(16)
- toString() 以字符串返回数值。toExponential() 返回字符串值,它包含已被四舍五入并使用指数计数法的数字。toFixed() 返回字符串值,它包含了指定位数小数的数字。toPrecision() 返回字符串值,它包含了指定长度的数字。valueOf() 以数值返回数值
- 把变量转化为数值:Number()---如果无法转换数字,则返回 NaN,可以把日期转换为数字,方法返回 1970 年 1 月 1 日至今的毫秒数 parseFloat() 、parseInt()解析一段字符串并返回数值。允许空格。只返回首个数字
数组:
- 添加元素:push, 设置 length 属性arr[arr.length] =
- 数组只能使用数字索引 不能使用命名索引---会导致混乱
- Array.isArray() 判断是否是数组,用typeof返回的是Object 或 instanceof Array---返回true
- 方法:
- toString() 把数组转换为数组值(逗号分隔)的字符串;
- join() 方法也可将所有数组元素结合为一个字符串(可设置分隔符);
- pop() 方法从数组中删除最后一个元素(pop() 方法返回“被弹出”的值);
- push() 方法(在数组结尾处)向数组添加一个新的元素(push() 方法返回新数组的长度);
- shift() 方法会删除首个数组元素,并把所有其他元素“位移”到更低的索引(shift() 方法返回被“位移出”的字符串);
- unshift() 方法(在开头)向数组添加新元素,并“反向位移”旧元素(unshift() 方法返回新数组的长度);
- delete删除元素 会在数组留下未定义的空洞(不要使用,用pop或shift替代);
- splice() 方法可用于向数组添加新项:第一个参数定义了应添加新元素的位置(拼接)。第二个参数定义应删除多少元素。其余参数定义要添加的新元素。可以用来删除元素
- concat() 方法通过合并(连接)现有数组来创建一个新数组
- slice() 方法用数组的某个片段切出新数组。
- sort() 方法以字母顺序对数组进行排序,sort() 函数按照字符串顺序对值进行排序,不能排数值(数值使用比值函数points.sort(function(a, b){return a - b});
- reverse() 方法反转数组中的元素。
- Math.max.apply 来查找数组中的最高值 Math.min()
5.数组迭代:
- Array.forEach()
- Array.map() ---(value, index, array)
- Array.filter() ---创建一个包含通过测试的数组元素的新数组
- Array.reduce() ---在每个数组元素上运行函数,以生成(减少它)单个值。
- Array.every() 和Array.some()---检查所有或部分数组值是否通过测试 (value, index, array) 返回true或false
- indexOf() ---在数组中搜索元素值并返回其位置。 .lastIndexOf()
- find() ---返回通过测试函数的第一个数组元素的值。 findIndex() ---返回通过测试函数的第一个数组元素的索引。
数学:
- Math.round(x) 的返回值是 x 四舍五入为最接近的整数
- Math.pow(x, y) 的返回值是 x 的 y 次幂
- Math.sqrt(x) 返回 x 的平方根
- Math.abs(x) 返回 x 的绝对(正)值
- Math.ceil(x) 的返回值是 x 上舍入最接近的整数
- Math.floor(x) 的返回值是 x 下舍入最接近的整数:
- Math.sin(x) 返回角 x(以弧度计)的正弦(介于 -1 与 1 之间的值)。 cos余弦
- Math.min() 和 Math.max() 可用于查找参数列表中的最低或最高值
- Math.random() 返回介于 0(包括) 与 1(不包括) 之间的随机
- Math.random() 与 Math.floor() 一起使用用于返回随机整数。 Math.floor(Math.random() * 100); ----返回0-99