1.业务知识的两点总结:
判断对象是否为{}
这个可以通过Object.keys(obj对象),它会返回枚举属性所组成的数组对象,因此可以通过length属性判断里面是否有属性存在。之前见过没用过,用过有点喜欢上它了😆。
const obj = {}; if (Object.keys(obj).length === 0) { console.log("现在对象里面没有任何的属性存在"); }
对于格式化的日期时间在不同浏览器上的处理
这个是在业务代码里,前端的小伙伴提醒的,敬佩啊!这个问题就是在Safari,浏览器里不支持日期格式化的"2017-09-20"这种格式,它在Safari中会显示NaN,但是在其它浏览器上显示正常。解决的方法就是将里面的"-"转换为"2017/09/20"这种格式即可,很神奇。
let newDate = "2017-09-20"; // 在使用时,为了兼容Safari浏览器的显示,可以将日期里面的"-"进行全局的替换 const regExp = "/-/g"; newDate.replace(regExp, "/"); console.log(newDate); // 2017/09/20这样顺利解决在各个浏览器里显示时间的问题
2.函数声明与函数表达式的区别
函数声明 函数表达式 形式 function fun() {} var fun = function() {} 使用方式 写在执行环境的任何地方都可以 必须像其它强语言一样,先定义后使用,后面别忘了加上";" // 函数声明的示例 console.log(sum(10, 10)); //20 function sum(a, b) { return a + b; } // 函数表达式的示例 console.log(sum(10, 10)); // 这里会报错,因为执行这行代码时,还没有读取函数表达式 var sum = function() { return a + b; }
3.函数的相关的说明以及没有重载
函数的声明方式有三种
(1)函数声明:function fun() {}
(2)函数表达式:var fun = function() {} (也称为变量式声明)
一般我们都是以上面的两种方式创建函数,下面的函数示例不推荐,不易阅读,书写也不方便。
(3)通过new 关键字进行创建函数,构造函数的Function里面可以接受任意多个参数,前面的参数都是形参,但最后一个参数都会被当做函数体执行,第一次见这个规则。具体示例如下:
const fun = new Function("a", "b", "return a + b"); // 很神奇吧😆,但是官方不推荐这么写
函数式对象,函数名式指针。今天早上看了一下,函数对象和我们平常理解的对象一样,都是一个对象可以包含多个对象指针。函数对象也不例外。
function sum(a, b) { return a + b; } console.log(sum(10, 10)); // 20 const anotherSum = sum; // 这里函数名后面没加()说明这里是将函数对象的指针赋值给了 anotherSum,加上()就代表调用了Sum函数。现在sum和anotherSum会同时指向sum的函数对象 console.log(anotherSum(20, 30)); // 50 sum = null; // 这里即使将sum指针置为null,但是anotherSum还是指向的是sum的函数对象 console.log(anotherSum(30, 40)); // 70, anotherSum仍然存在
在javaScript里函数没有重载,因为后面的函数会覆盖前面的函数
function test() { // do something console.log("测试1"); } // 下面再定义一个重名的函数,这个函数会覆盖上一个重名函数 function test() { console.log("测试2"); } test(); // 测试2 // 对于没有重载的更直观的理解 var test = function() { console.log("测试1"); } // 这里就像是变量一样,把上面的同名变量覆盖了 test = function() { console.log("测试2"); } test(); // 测试2
网友评论