重学JavaScript 篇的目的是回顾基础,方便学习框架和源码的时候可以快速定位知识点,查漏补缺,所有文章都同步在 公众号(道道里的前端栈) 和 github 上。
Global 和 Math 是ECMAScript的两个单例内置对象,我们可以在开发中直接使用这两个内置对象。
Global
在全局作用域中定义的变量和函数都会变成 Global 对象的属性,除了常用的 isNaN() ,isFinite() ,parseInt() 和 parseFloat() 等,还有另外一些特殊的方法。
-
URL编码
encodeURI() 和 encodeURIComponent() 方法用于编码统一资源标识符(URI),用法如下:
let uri = "http://www.baidu.com/image a.js#start?param=1"; console.log(encodeURI(uri)); // http://www.baidu.com/image%20a.js#start?param=1 console.log(encodeURIComponent(uri)); // http://www.baidu.com%2Fimage%20a.js%23start%3Fparam%3D1从上可以看出来,encodeURI 不会编码属于URL组件的特殊字符,比如:冒号、斜杠、问号、井号,而encodeURIConponent会编码所有非标准字符。
一般来说,使用 encodeURIComponent() 应该比使用 encodeURI() 的频率高,因为编码查询字符串参数比编码基准URI的次数多
有编码就有解码,decodeURI() 用来解码 encodeURI() 编码过的字符,decodeURIComponent() 用来解码 encodeURIComponent() 编码过的字符。
以上四个方法取代了 escape() 和 unescape(),这两个方法已经被弃用
-
eval()
该方法应该是整个ECMAScript中最强大的了,它接收一个参数,会将参数解释为实际的ECMAScript语句,然后插入到该位置上,变量定义,方法声明,都可以在里面,同时它也是特别危险的,特别是在解释用户输入内容时,该方法会造成XSS攻击!所以尽量不要使用它。
-
window对象
在浏览器中,window对象 就是 Global对象的代理,因此所有全局作用域中声明的变量和函数都变成了 iwndow 的属性,在浏览器控制台输入 window,会看到很多属性。一般我们自定义的全局方法有的也会绑定在 window 上。
Math
Math对象 被用来操作数学公式和计算,也是特别常用的方法。
-
属性
下面是Math对象内置的对象属性:
属性 说明 Math.E 自然对数的基数e的值 Math.LN2 2为底的自然对数 Math.LN10 10为底的自然对数 Math.LOG2E 以2为底e的对数 Math.LOG10E 以10为底e的对数 Math.PI π的值 Math.SQRT1_2 1/2的平方根 Math.SQRT2 2的平方根 -
min()、max() min() 可以找出一组数值中的最小值,max() 可以找出最大值:
Math.max(1, 2, 100, 60); // 100 Math.min(1, 2, 100, 60); // 1如果想找到数组中的最大值,可以使用扩展运算符:
Math.max(...[1, 2, 100, 60]) // 100 Math.min(...[1, 2, 100, 60]) // 1 -
舍入
舍入方法包括以下四个:
-
Math.ceil() 向上舍入
Math.ceil(25.9); // 26 Math.ceil(25.1); // 26 -
Math.floor() 向下舍入
Math.floor(25.9) // 25 Math.floor(25.1) // 25 -
Math.round() 四舍五入
Math.round(25.9) // 26 Math.round(25.1) // 25 -
Math.fround() 返回数值最接近的单精度(32位)浮点值
Math.fround(25.9) // 25.899999618530273
-
-
随机数
Math.random() 返回一个0~1范围内的随机数,并且不包含0和1,利用随机原理我们可以创建随机的ID(数字和字符),比如:
Math.random().toString(16).substring(2) // 14位 Math.random().toString(32).substring(2) // 11位也可以从一个数组中获取随机元素:
let arr = [1, 2, 5, 100, "abc", 6]; let index = Math.floor((Math.random() * arr.length)); console.log(arr[index])
Math对象中常用的方法就是上面的4类,如果涉及到跟过的数学公式,可以 点击这里 查看。
我的公众号:道道里的前端栈,每一天一篇前端文章,嚼碎的感觉真奇妙~