我不知道你可以用JS做的6件事一个有向上积极态度的人。本文已收录到GitHubhttps://github.com/qq44924588...,文章已分类,也整理了很多我的文档和教程资料。大家都说简历里没项目可写,所以给大家找了一个项目,还给了一个【搭建教程】。JS是一门非常灵活的语言,以至于我们常常觉得它是最容易学,最难掌握的语言。我已经使用JavaScript很多年了,但我仍然会偶然发现一些我不知道的隐藏语法或技巧。让我们继续前进,看看我发现了什么。1.函数构造函数虽然Function()构造函数不是很常用,但是了解它还是很有必要的。不管是通过函数定义语句还是函数字面量表达式,函数定义都必须使用function()关键字。也可以通过Function()构造函数定义单个函数,例如:constdiff=newFunction('a','b','returna-b');diff(20,13)//第7行的实际值效果等价于下面这行代码:constdiff=function(a,b){returna-b}diff(20,13)2.with语句JavaScript有一个with关键字,with语句的初衷是为Hierarchicalobjectaccess提供namespace-style的简写。即在指定的代码区,直接通过节点名调用对象。我们已经知道变量的作用域和作用域链(即按顺序检索的对象列表)是用来解析变量名的,with语句是用来临时修改作用域链的。语法是:with(object)这个语句有效地将对象添加到作用域链的头部,执行语句,并将作用域链恢复到它的原始状态。constbook={author:'前端小智',title:'我不知道用JS能做的6件事'}with(book){console.log(author);//前端小智console.log(title);//6morethingsIdidn'tknowyoucoulddowithJS}使用with语句的JavaScript代码很难优化,因此它的运行速度比不使用with语句的等效代码慢得多。此外,with语句中的函数定义和变量初始化会产生令人惊讶和冲突的行为,因此我们避免使用with语句。3.+运算符我们可以使用+运算符将字符串转换为数字。除非你想解析为特定的数字类型,否则你不需要使用像parseInt()或parseFloat()这样的函数。constnr=+'1.5';nr+1;//2.54。将属性分配给函数我们可以将属性分配给函数。接下来,您可以通过为它们分配特定属性来创建可配置函数。functionsayHello(){if(sayHello.country='US'){returnalert('你好!');}if(sayHello.country='FR'){returnalert('Bonjour!');}if(sayHello.country='GR'){returnalert('GutenTag!');}returnalert('Hi');}sayHello.country='FR';sayHello();//alert('Bonjour!');此外,我们可以将这些函数属性用作计数器或“静态变量”。5.arguments.callee.caller我们可以通过arguments.callee.caller来查看是哪个函数调用了当前函数。argumentsJS普通函数的默认值。arguments.callee.caller告诉我们谁调用了这个函数。类似于只有一层的console.trace()。functionsayHello(){console.log(arguments.callee.caller)//[Function:start]}(functionstart(){sayHello()})()另外,arguments.callee指的是当前正在运行的函数。functionsayHello(){console.log(arguments.callee)//[函数:sayHello]}(functionstart(){sayHello()})()6.void运算符void运算符计算给定的表达式值,然后返回undefined。无效(1);//未定义无效(真);//undefinedvoid(false);//未定义无效({});//undefined如果你问为什么只需要返回undefined而不是undefined,则需要一个特殊的关键字:原因是在ES5之前,实际上可以将一个全局变量命名为undefined,像这样:varundefined="hello"orvarundefined=23,大多数浏览器都会接受它;undefined不能保证标识符实际上是不确定的。因此,要返回实际的未定义值,请使用void运算符。它不是一个非常流行的运算符,很少使用。达人的【三通】是小智继续分享的最大动力。本博客如有错误或建议,欢迎达人留言。最后谢谢大家的观看。代码部署后可能存在的bug,无法实时获知。事后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的bug监控工具Fundebug。原文:http://www.js-craft.io/blog/6...交流文章每周更新,微信搜索【大千世界】立即阅读,回复【福利】还有很多前端视频等有你,本文GitHubhttps://github.com/qq449245884/xiaozhi已收录,欢迎Star。
