您可能已经知道 JAVAScript 是世界上使用最广泛的编程语言。它用于 Web、移动混合应用程序、服务器端 (NodeJS) 和各种其他应用程序。由于它可用于在 Web 浏览器中显示以及使用 nodebot 或其他智能交互机器人,因此它可以作为许多新开发人员的编程入门。在就业市场上,精通 JavaScript 并能编写干净、高效代码的开发人员需求量很大。
无论使用何种浏览器/引擎或 SSJS(Server Side JavaScript)解释器,所有 JavaScript 开发人员都应该熟悉我将在本文中分享的提示、技巧和最佳实践。
如有必要,使用 ==(或!=)运算符自动执行类型转换。使用 ===(或 !==)运算符时不会进行转换。有人可能会争辩说它比较值和类型比 == 更快。
[5] === 5 // is false
[5] == 5 // is true
'5' == 5 // is true
'5' === 5 // is false
[] == 0 // is true
[] === 0 // is false
'' == false // is true but true == "a" is false
'' === false // is false
全局变量在分配给未声明的变量时自动声明。尽量防止使用全局变量。
typeof 操作符用于检测变量的数据类型,它返回一个字符串,表示变量的类型。它可以检测出所有类型,包括:
let x = 5;
console.log(typeof x); // "number"
instanceof 操作符用于检测一个对象是否是某个类的实例。它返回一个布尔值,表示对象是否是类的实例。它只能用于检测对象类型,因为基本类型没有构造函数。
let x = new Date();
console.log(x instanceof Date); // true
constructor 属性返回创建对象的构造函数。它也只能用于检测对象类型。
let x = new Date();
console.log(x.constructor === Date); // true
它们之间的区别就是 typeof 操作符用于检测类型,而 instanceof 和 constructor 都用于检测类。 instanceof 操作符检测对象是否是某个类的实例,而 constructor 检测对象是由哪个类创建的。
另外,typeof 可以检测出所有类型,而 instanceof 和 constructor 只能检测对象
还有一点值得注意的是,instanceof 操作符在检测继承关系时也是有效的。比如,如果一个类 B 继承自另一个类 A,那么一个 B 类的实例也是 A 类的实例。
class A {}
class B extends A {}
let x = new B();
console.log(x instanceof B); // true
console.log(x instanceof A); // true
而 constructor 属性则只能检测到对象是由哪个类直接创建的,并不能检测继承关系。
class A {}
class B extends A {}
let x = new B();
console.log(x.constructor === B); // true
console.log(x.constructor === A); // false
总结一下,typeof 操作符用于检测变量的类型,instanceof 操作符用于检测对象是否是某个类的实例,而 constructor 属性用于检测对象是由哪个类创建的。
typeof 和 instanceof 都只能检测对象类型,但instanceof 不能检测基本类型。 instanceof 可以检测继承关系,而 constructor 只能检测直接创建的关系。
自调用匿名函数或立即调用函数表达式是此 (IIFE) 的通用名称。它是以下形式的函数,在创建后立即运行:
(function(){
// some private code to be executed automatically
})();
(function(d,y){
var result = d+y;
return result;
})(20,20)
var numbers = [6, 650, 140 , -225 , 233 , 500 , 152300, -81451];
numbers = numbers.sort(function(){ return Math.random() - 0.5});
function isNumber(n){
return !isNaN(parseFloat(n)) && isFinite(n);
}
var argumentsArray = Array.prototype.slice.call(arguments);
var newArray = [12 , 222 , 1000 ];
newArray.length = 0; // newArray will be equal to [].
var squares = [1,4,6,2].map(function (val) {
return val * val;
});
// squares will be equal to [1, 16, 26, 4]
结束语
由于文章篇幅问题,今天的介绍就到这里 ,下一篇文章继续介绍剩下的10个小技巧,希望今天的分享对你有所帮助,感谢你的阅读,如果你喜欢我的分享,别忘了点赞转发,让更多的人看到,最后别忘记点个关注,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。
原文:
https://javascript.plAInenglish.io/my-20-most-useful-javascript-tips-tricks-and-best-practices-9ad8fe7f0c01作者:Abdulazeez Sherif
非直接翻译,有自行改编和添加部分。