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