1. 换行
var text = '我咋这么帅';var str = text.split('').join('\n');console.log(str);console.log(document.getElementsByClassName('text')[0].innerText(str));
2.彩色打印
console.log("%cauthor: youjin, 打印出来看看是啥", " text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);font-size:1.8em;");
3.快速数组
问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标?
结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
方法一: Array.keys();
var arr = new Array(100).keys();console.log(Array.from(arr));
方法二: Array.from()
var arr = Array.from({length:100}, (v,k) => k);console.log(arr);
方法三: 使用…扩展运算符
var arr = [...Array(100).keys()];console.log(arr);
方法四: Object.keys() 与 Array.from()
var arr = Object.keys(Array.from({length:100}));console.log(arr);
这种方式创建的是一个字符串数组,所以需要转一下
var arr = Object.keys(Array.from({length:100})).map(function(item){return +item;});console.log(arr);
-
4.禁止打开控制台
var ConsoleManager={onOpen:function(){console.log("Console is opened")},onClose:function(){console.log("Console is closed")},init:function(){var self = this;var x = document.createElement('div');var isOpening = false,isOpened=false;Object.defineProperty(x, 'id', {get:function(){if(!isOpening){self.onOpen();isOpening=true;}isOpened=true;}});setInterval(function(){isOpened=false;console.info(x);console.clear();if(!isOpened && isOpening){self.onClose();isOpening=false;}},200)}}ConsoleManager.onOpen = function(){//打开控制台,跳转到另一页,对火狐失效try{window.location = "about:blank";}catch(err){var a = document.createElement("button");a.onclick=function(){window.location = "about:blank";}a.click();}}ConsoleManager.onClose = function(){alert("Console is closed!!!!!")}ConsoleManager.init();// 监测浏览器宽度// (function(){// var h = 1080,w=1920;// window.onresize = function () {// if (h!= window.innerHeight||w!=window.innerWidth){// window.close();// window.location = "about:blank";// } else{// }// }// })()
5.位运算
交换变量
//写法一let a=1,b=2;a ^= b;b ^= a;a ^= b;// a=2 b=1// 写法二a = (b^=a^=b)^a; // a=2 b=1
转换booblean
!!~(['1','2']).indexOf('3');//false!!~(['1','2']).indexOf('1');//true
按位操作符(Bitwise operators) 将其操作数(operands)当作32位的比特序列(由0和1组成),而不是十进制、十六进制或八进制数值。例如,十进制数9,用二进制表示则为1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。
| 位运算符 | 名称 | js内使用方式 | 操作作用 | 应用举例 |
|---|---|---|---|---|
| & | 按位与 | a & b | 对每对比特位执行与(AND)操作。只有两者互相对应的比特位都是 1 时,a & b的对应比特位才是 1 | a&1 判断一个整数的奇偶 |
| | | 按位或 | a | b | 对每一对比特位执行或(OR)操作。如果两者互相对应的比特位中都至少有一个是 1,则a | b的对应比特位是 1。 | a|1 把这个数强行变成最接近的偶数; 将任一数值 x 与 0 进行按位或操作,其结果都是 x; 将任一数值 x 与 -1 进行按位或操作,其结果都为 -1 |
| ^ | 按位异或 | a ^ b | 对每一对比特位执行异或(XOR)操作。如果两者互相对应的比特位都不同,则a ^ b的对应比特位是 1。 | 两次异或同一个数最后结果不变 (a ^ b) ^ b = a |
| ~ | 按位取反 | ~a | 对每一个比特位执行非(NOT)操作。NOT a 结果为 a 的反转(即反码); 即把0和1全部取反 |
if (~str.indexOf(searchFor)) { // searchFor 包含在字符串中 } else { // searchFor 不包含在字符串中 } |
| << | 左移 | a << b | 将 a 的二进制形式向左移 b (< 32) 比特位,右边用0填充。 | |
| >> | 带符号右移 | a >> b | 将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位。 | 相当于a除以2的b次方(取整) |
| >>> | 无符号右移 | a>>> b | 将 a 的二进制表示向右移b(< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。 |
6.补零
- 代码实现 ```javascript /**
- 自定义函数名:PrefixZero
- @param num: 被操作数
- @param n: 固定的总位数 */ function PrefixZero(num, n) { return (Array(n).join(0) + num).slice(-n); } ```
- 具体示例 ```javascript var myNum = 9; var myNum2 = 12; console.log(‘原变量myNum:’+myNum);//9 console.log(‘处理后myNum:’+PrefixZero(myNum, 3));//009
console.log(‘原变量myNum2:’+myNum2); console.log(‘处理后myNum2:’+PrefixZero(myNum2, 3));//012 ```
- 简要说明如下:
- Array(5) => 创建了一个长度为5的空数组
console.log(Array(5));// [empty × 5] - Array(5).join(0) => 用0拼接将数组转换成字符串
console.log(Array(5).join(0));// 0000 - Array(5).join(0)+91 => 通过+,实现字符串的拼接
console.log(Array(5).join(0)+91);// 000091 - (Array(5).join(0) + 91).slice(-5) => slice(startIndex,endIndex)方法,用于截取
参数说明:
参数是起始位置,含头不含尾,
只有一个参数时,表示从该起始位置一直截取到最后。
参数值为负数时,表示从后往前数,如最后一位,索引是-1
- Array(5) => 创建了一个长度为5的空数组
如此,.slice(-5)表示截取的是从后往前数5位一直到最后
console.log((Array(5).join(0) + 91).slice(-5));// 00091
