We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
作者:Daniel 译者:前端小智 来源:js-craft
点赞再看,微信搜索 【大迁世界】 关注这个没有大厂背景,但有着一股向上积极心态人。本文 GitHub https://github.com/qq449245884/xiaozhi 上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。
GitHub
JS 是一种灵活的语言,这种特性让我们经常觉得它是一门最简单的语言,也是最难掌握的语言。 我使用 JavaScript 已有很多年了,但我仍然偶然发现一些我不知道的隐藏语法或技巧。
我们来一直看看,我发现了哪些。
Function()构造函数虽然不是很常用,但是了解一下还是很有必要的。
Function()
不管是通过函数定义语句还是函数直接量表达式,函数的定义都要使用 function()关键字。单函数还可以通过Function()构造函数来定义,比如:
function()
const diff = new Function('a', 'b', 'return a - b'); diff(20,13) // 7
这一行的实际效果和下面的一行代码是等价的:
const diff = function(a, b) { return a - b } diff(20, 13)
JavaScript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式。也就是在指定的代码区域, 直接通过节点名称调用对象。
with
我们已经知道,用变量的作用域和作用域链(即一个按顺序检索的对象列表)来进行变量名解析,而 with 语句就是用于暂修改作用域链的,其语法为:
with(object)
该语句可以有效地将object添加到作用域链的头部,然后执行statement,再把作用域链恢复到原始状态。
object
statement
const book = { author: '前端小智', title: '我不知道还可以用 JS 做的 6 件事' } with(book) { console.log(author); // 前端小智 console.log(title); // 我不知道还可以用 JS 做的 6 件事 }
使用 with语句的 JavaScript 代码很难优化,因此它的运算速度比不使用with语句的等价代码要慢得多。而且,在with语句中的函数定义和变量初始化可能会产生令人惊讶的、相抵触的行为,因此我们避免使用with`语句。
语句的 JavaScript 代码很难优化,因此它的运算速度比不使用
语句的等价代码要慢得多。而且,在with语句中的函数定义和变量初始化可能会产生令人惊讶的、相抵触的行为,因此我们避免使用
我们可以使用+运算符将字符串转换为数字。 除非你想解析为特定的数字类型,否则不需要使用诸如 parseInt() 或 parseFloat() 之类的函数。
+
parseInt()
parseFloat()
const nr = +'1.5'; nr + 1; // 2.5
我们可以给函数赋属性。接着,可以通过为函数分配特定的属性来创建可配置的函数。
function sayHello() { if (sayHello.country = 'US') { return alert('Hi there!'); } if (sayHello.country = 'FR') { return alert('Bonjour !'); } if (sayHello.country = 'GR') { return alert('Guten Tag !'); } return alert('Hi'); } sayHello.country = 'FR'; sayHello(); // alert('Bonjour !');
外,我们可以使用这些函数属性作为计数器或“静态变量”。
我们可以使用arguments.callee.caller来查看哪个函数调用了当前函数。 arguments JS 普通函数的默认值。 arguments.callee.caller告诉我们谁调用了该函数。 类似于只有一层 console.trace()。
arguments
arguments.callee.caller
console.trace()
function sayHello() { console.log(arguments.callee.caller) // [Function: start] } (function start() { sayHello() })()
另外arguments.callee表示引用当前正在运行的函数。
arguments.callee
function sayHello() { console.log(arguments.callee) // [Function: sayHello] } (function start() { sayHello() })()
void 运算符 对给定的表达式进行求值,然后返回 undefined。
void
undefined
void(1); // undefined void(true); // undefined void(false); // undefined void({}); // undefined
如果你问为什么只需要返回undefined而不是返回就需要一个特殊的关键字undefined:原因是在ES5之前,实际上可以命名一个全局变量undefined,就像这样:var undefined = "hello"或var undefined = 23,大多数浏览器都可以接受它;undefined不会保证标识符实际上是不确定的。因此,要返回实际的未定义值,请使用void运算符。它不是一个非常流行的运算符,并且很少使用。
var undefined = "hello"
var undefined = 23
人才们的 【三连】 就是小智不断分享的最大动力,如果本篇博客有任何错误和建议,欢迎人才们留言,最后,谢谢大家的观看。
代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
原文:http://www.js-craft.io/blog/6-things-i-didnt-know-you-can-do-in-javascript/
文章每周持续更新,可以微信搜索 【大迁世界 】 第一时间阅读,回复 【福利】 有多份前端视频等着你,本文 GitHub https://github.com/qq449245884/xiaozhi 已经收录,欢迎Star。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
JS 是一种灵活的语言,这种特性让我们经常觉得它是一门最简单的语言,也是最难掌握的语言。 我使用 JavaScript 已有很多年了,但我仍然偶然发现一些我不知道的隐藏语法或技巧。
我们来一直看看,我发现了哪些。
1. Function 构造函数
Function()
构造函数虽然不是很常用,但是了解一下还是很有必要的。不管是通过函数定义语句还是函数直接量表达式,函数的定义都要使用
function()
关键字。单函数还可以通过Function()
构造函数来定义,比如:这一行的实际效果和下面的一行代码是等价的:
2. with 语句
JavaScript 有个
with
关键字,with
语句的原本用意是为逐级的对象访问提供命名空间式的速写方式。也就是在指定的代码区域, 直接通过节点名称调用对象。我们已经知道,用变量的作用域和作用域链(即一个按顺序检索的对象列表)来进行变量名解析,而
with
语句就是用于暂修改作用域链的,其语法为:该语句可以有效地将
object
添加到作用域链的头部,然后执行statement
,再把作用域链恢复到原始状态。使用 with
语句的 JavaScript 代码很难优化,因此它的运算速度比不使用
with语句的等价代码要慢得多。而且,在with语句中的函数定义和变量初始化可能会产生令人惊讶的、相抵触的行为,因此我们避免使用
with`语句。3. + 操作符
我们可以使用
+
运算符将字符串转换为数字。 除非你想解析为特定的数字类型,否则不需要使用诸如parseInt()
或parseFloat()
之类的函数。4. 给函数赋值属性
我们可以给函数赋属性。接着,可以通过为函数分配特定的属性来创建可配置的函数。
外,我们可以使用这些函数属性作为计数器或“静态变量”。
5. arguments.callee.caller
我们可以使用arguments.callee.caller来查看哪个函数调用了当前函数。
arguments
JS 普通函数的默认值。arguments.callee.caller
告诉我们谁调用了该函数。 类似于只有一层console.trace()
。另外
arguments.callee
表示引用当前正在运行的函数。6. void 操作符
void
运算符 对给定的表达式进行求值,然后返回undefined
。如果你问为什么只需要返回
undefined
而不是返回就需要一个特殊的关键字undefined
:原因是在ES5之前,实际上可以命名一个全局变量undefined
,就像这样:var undefined = "hello"
或var undefined = 23
,大多数浏览器都可以接受它;undefined
不会保证标识符实际上是不确定的。因此,要返回实际的未定义值,请使用void
运算符。它不是一个非常流行的运算符,并且很少使用。人才们的 【三连】 就是小智不断分享的最大动力,如果本篇博客有任何错误和建议,欢迎人才们留言,最后,谢谢大家的观看。
代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
原文:http://www.js-craft.io/blog/6-things-i-didnt-know-you-can-do-in-javascript/
交流
文章每周持续更新,可以微信搜索 【大迁世界 】 第一时间阅读,回复 【福利】 有多份前端视频等着你,本文 GitHub https://github.com/qq449245884/xiaozhi 已经收录,欢迎Star。
The text was updated successfully, but these errors were encountered: