
console.log(7 & 1); // 1
console.log(8 & 1); // 0// 不能对负数取整
console.log(~~11.71); // 11
console.log(11.71 >> 0); // 11
console.log(11.71 << 0); // 11
console.log(11.71 | 0); // 11
console.log(6.83 >>> 0); // 6console.log(12 >> 1); // 6let a = 4654;
// 如何和目标数相等,则等于 0,否则等于其他数
if (a ^ 1171) {
// 不等于的情况
console.log(12);
} else {
// 等于的情况
console.log(34);
}n & (n - 1);
// 是 0 则是 2 的整数次幂,不是则返回其他数
console.log(16 & (16 - 1)); // 0
console.log(15 & (15 - 1));// before
if (arr.indexOf(item) > -1) {
// code
}
// 按位非:item 将会转换为 string 类型进行查找
if (~arr.indexOf(item)) {
// code
}// 求负数的相反数
console.log(~-n + 1); // n
// 求正数的相反数
console.log(~n + 1); // -nconsole.log(8 << 1); // 16
console.log(7 << 1); // 14console.log(2 << 2); // 8console.log(2 << 4); // 16参考:https://juejin.cn/post/6938581764432461854
module.exports 导出变量和函数,可导出任意类型的值,使用 require 来导入module.exports、exports// 导出一个对象
module.exports = {
name: '蛙人',
age: 24,
sex: 'male',
};
// 导出任意值
module.exports.name = '蛙人';
module.exports.sex = null;
module.exports.age = undefined;
// 直接导出,省略 module 关键字
exports.name = '蛙人';
exports.sex = 'male';
exports = {
name: '蛙人',
};// 直接导入
let data = require('./index.js');
let { name, age } = require('./index.js');
console.log(data); // { name: "蛙人", age: 24 }
console.log(name, age); // 蛙人,24
// 动态导入
let lists = ['./index.js', './config.js'];
lists.forEach(url => require(url)); // 动态导入
if (lists.length) {
require(lists[0]); // 动态导入
}// index.js
let num = 0;
module.exports = {
num,
add() {},
};
let { num, add } = require('./index.js');
console.log(num); // 0
add();
console.log(num); // 0
num = 10;ESM:导出分两种:单个导出 export,默认导出 export default, 导入使用 import...from
// 导出变量
export const name = "蛙人"
export const age = 24
// 导出函数也可以
export function fn() {}
export const test = () => {}
// 如果有多个的话
const name = "蛙人"
const sex = "male"
export { name, sex }
// 混合导出
export const name = "蛙人"
export const age = 24
export default {
fn() {},
msg: "hello 蛙人"
}// index,js
export const name = '蛙人';
export const age = 24;
import { name, age } from './index.js';
console.log(name, age); // "蛙人" 24
// 如果里面全是单个导出,我们就想全部直接导入则可以这样写
import * as all from './index.js';
console.log(all); // {name: "蛙人", age: 24}
// 混合导入
// index,js
export const name = '蛙人';
export const age = 24;
export default {
msg: '蛙人',
};
// index2.js
import msg, { name, age } from './index.js';
// 起别名
import { default as all, name, age } from './index.js';
console.log(msg); // { msg: "蛙人" }// index.js
export let num = 0;
export function add() {
++num;
}
import { num, add } from './index.js';
console.log(num); // 0
add();
console.log(num); // 1
num = 10; // 抛出错误
// ESM 中的 import 在文件最顶部,不可动态加载•问题标注 Q:(question)
•答案标注 R:(result)
•注意事项标准:A:(attention matters)
•详情描述标注:D:(detail info)
•总结标注:S:(summary)
•分析标注:Ana:(analysis)
•提示标注:T:(tips)