// 科学计数法 console.log(10e23); // 10* 10的23次方 console.log(1e-20); // 1* 10的-20次方 // Math 数学部分函数 var math = Math.pow(2,53); // 2的53次方 math = Math.pow(4,1/2); // 4的平方根 math = Math.round(.6); // 四舍五入 math = Math.ceil(.6); math = Math.floor(.6); math = Math.abs(-5); math = Math.max(1,2,3); math = Math.min(1,2,3); math = Math.random(); math = Math.PI; math = Math.E; // 这是一个欧拉常数和自然对数的基数,约为 2.718. math = Math.sqrt(4); math = Math.sin(10); math = Math.log(1000)/Math.LN10; // 对数 10为底100的对数 math = Math.log(512)/Math.LN2; math = Math.exp(1); // E的1次幂运 math = Infinity; // 溢出数字 math = -Infinity; math = -0 / 0; // NaN math = Infinity / -Infinity; // NaN math = Infinity / 0; // 正无穷大 math = Infinity / -0; // 负无穷大 math = -Infinity / -0; // 负负得正 正无穷大 math = Number.POSITIVE_INFINITY; // 正无穷大 math = 1 / 0; // 正无穷大 math = Number.MAX_VALUE+1; // 最大值, 值不变 math = Number.MIN_VALUE/2; // 发生下溢 结果0 math = -Number.MIN_VALUE/2; // -0 math = Number.NEGATIVE_INFINITY; //负无穷大 math = -1 / 0; math = NaN; // NaN != NaN 用!=判断NaN比较好 math = -1 / Infinity; // -0 math = 0 == -0; // true math = 0 === -0; // true math = Infinity == -Infinity; // false // 小数计算注意 0.3 - 0.2 有bug // Date 日期部分函数 math = new Date(2018,0,0); // 设置日期 math = new Date(2011,1,1,17,10,30); // 详细设置 math = new Date(); // 当前日期 math = new Date(2011,1,1,17,10,30).getTime() - new Date(2010,1,1,17,10,30).getTime(); // 日期减法,获得间隔时间毫秒 math = math/1000/3600/24; // 利用毫秒计算日期 => 365 date = new Date(); math = date.getFullYear(); math = date.getDate(); math = date.getDay(); // 0-6 0代表星期日 math = date.getHours(); math = date.getMinutes(); math = date.getSeconds(); // 秒 math = date.getMilliseconds(); // 毫秒 math = date.getUTCHours(); // UTC时间 // String 字符串部分函数 var s = 'Hello world\ \ 6666'; // \斜线换行写代码 也可以转义 math = s.length; // 字符串的长度 math = s.charAt(1); // 传入位置,获得位置的值 math = s.charAt(s.length-1); // 获得最后一个值 math = s[s.length-1]; // 获取最后一个值 math = s.slice(开始位置,结束位置); // 可以用负数 可以不填参数 math = s.substring(6,1); // 开始位置 < 结束位置 就交换位置 math = s.indexOf('H'); math = s.indexOf('H',3); // 设置开始查找的位置 math = s.lastIndexOf("l"); math = s.split(''); // 字符串分割成数组 math = s.replace('Hello', 'Hi'); math = s.toLowerCase(); math = s.toUpperCase(); // RegExp 正则部分函数 var pattern = /\d+/g; math = pattern.test(s); // 找到? true / false math = s.search(pattern); // 找到? 返回位置 math = s.match(pattern); // 找到? 返回找到的值 math = s.replace(/\d/g,'H') // 正则替换, g全局 math = s.split(/\D+/); // 非数字字符截取字符串 // undefined null 0 -0 NaN "" === false // undefined == null 不全等 // 类型转换 math = parseInt(s); math = parseFloat(s); math = new String(s); math = new Number(s); math = new Boolean(s); math = s.toString(8); // 参数可加可不加,转换进制 math = parseInt('0777',8); // 传入的数字0777是八进制,然后要转换10进制 // 两个数组或者对象值相等,但是他们永远不相等 var arr1 = []; var arr2 = arr1; // 两个数组在一起,一个修改另一个一起变 arr1 == arr2 ; // 引用所以相等 math = n.toFixed(1); // 保留几位小数,自动四舍五入 math = n.toExponential(6); // 转换为指数, 参数代表显示几位数字 // 日期对象 date = new Date(); math = date-1; // 数字 毫秒 math = date+1; // 字符串 当前的时间 math = new Object; // 没有参数圆括号可以省略 // delete 操作符,不能删除全局变量,函数 // 删除数组元素 数组长度不变,那个元素变成empty var x = 1; delete x; // false; function a() {}; delete a; // false; // eval('a+1'); 相等于js解释器 var geval = eval; // 使用别名调用eval将是全局eval var x = "global", y = "global"; function f() { var x; eval("x += 'changed'"); // 只能修改局部变量 } function g() { geval('y = 100'); // 修改的是全局 } f(); g(); console.log(x,y); // with // 如果 o 对象有x属性,就修改,没有,x就是全局变量 with(o) x = 1; // 如果有就修改 var o1 = Object.create(o2); // o1 和 o2 关联了 // 对象方法 var obj = { x:1 }; obj.hasOwnProperty('x'); // 判断x属性是否是自有属性 obj.propertyIsEnumerable('x'); // 判断x属性是否可枚举 Object.keys(obj); // 返回自有属性数组 可枚举的 Object.getOwnPropertyNames(obj); // 返回对象所有自有属性的名称 // get set var k = { data_prop: 111, // set 是属性 尴尬 get accessor_prop() { return this.data_prop; }, set accessor_prop(value) { this.data_prop = value; } } k.accessor_prop = 1; // set k.accessor_prop; // get Object.defineProperty(obj, "x", { // 设置对象属性的特性 value: 1, // 值 writable: true, // 可修改? enumerable: false, // 可枚举? configurable: true // 可配置? delete }) Object.getOwnPropertyDescriptor(k,"x") // 获得自有属性的的特性 // 设置对象多个属性和特性 var Obj = Object.defineProperties({},{ y: { value:1, writable: true, enumerable: true, configurable: true }, x: { value:1, writable: false, enumerable: false, configurable: false}, r: { get: function() { return Math.sqrt(this.x*this.x+this.y*this.y) }, enumerable: true, configurable: true, } }) // 获取对象的真正原型 Object.getPrototypeOf(k); obj.constructor.prototype; var obj1 = {}; var obj2 = Object.create(obj1); obj1.isPrototypeOf(obj2); // true 检测一个对象是否是另一个对象的原型 // 可扩展性 var o = {x:1}; Object.preventExtensions(o); // 不可扩展 o.y = 1; // 没用 console.log(o.y); // undefined console.log(Object.isExtensible(o)); // 对象是否可扩展? Object.seal(o); // 封闭对象,属性不能删除/配置, 也不能添加新属性 // 不过可写属性,可以修改,本来的属性可以修改 console.log(Object.isSealed(o)); // true 是否是封闭对象? Object.freeze(o); // 冻结对象 自有的属性设置为只读 console.log(Object.isFrozen(o)); // true 是否是冻结对象? var json = { x:1, y:2, z:3 } var jsonStr = '{"x":"1"}'; console.log(JSON.stringify(json,null, ' ')); // 转换为JSON对象 后面两个参数可以不加,只是打印好看 console.log(JSON.parse(jsonStr)); // 将JSON字符串转换为js对象 console.log(new Date().toString()); // 普通 Sun Jul 29 ... console.log(new Date().toLocaleString()); // 本地化格式字符串 更加简洁 2018/7/29 ...
js权威指南学习笔记1
猜你喜欢
转载自www.cnblogs.com/mutaim/p/9386158.html
今日推荐
周排行