Browsed by
月份:2017年10月

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
398 views
好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
457 views
var function = function() {}

var function = function() {}

JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?

方法一:
var foo = function () {
//code
}
方法二:
function foo () {
//code
}

Answer:

最关键的区别在于 JavaScript 函数和变量声明的“提前”(hoist)行为。
the Google style guide 建议我们采用方法一。简单的说 如果我们使用 匿名函数
var FUNCTION_NAME = function() { /* FUNCTION_BODY */}; 

这种方式, 编译后变量声明FUNCTION_NAME 会“被提前”了,但是他的赋值(也就是FUNCTION_BODY)并不会被提前。
也就是,匿名函数只有在被调用时才被初始化。

如果我们使用

function FUNCTION_NAME () 
{ /* FUNCTION_BODY */}; 

这种方式, 编译后函数声明和他的赋值都会被提前。
也就是说函数声明过程在整个程序执行之前的预处理就完成了,所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。

请先看一个例子

function hereOrThere() { //function statement
  return 'here';
}

alert(hereOrThere()); // alerts 'there'

function hereOrThere() {
  return 'there';
}

我们会发现alert(hereOrThere) 语句执行时会alert(‘there’)!这里的行为其实非常出乎意料,主要原因是 JavaScript 函数声明的“提前”行为,简而言之,就是 Javascript允许我们在变量和函数被声明之前使用它们,而第二个定义覆盖了第一种定义。换句话说,上述代码编译之后相当于

function hereOrThere() { //function statement
  return 'here';
}

function hereOrThere() {//申明前置了,但因为这里的申明和赋值在一起,所以一起前置
  return 'there';
}

alert(hereOrThere()); // alerts 'there'

强烈推荐阅读下面文章, JavaScript 中对变量和函数声明的“提前(hoist)”

再看下面一个例子:

var hereOrThere = function() { // function expression
  return 'here';
};

alert(hereOrThere()); // alerts 'here'

hereOrThere = function() {
  return 'there';
};

这里就是我们期待的behavior,这段程序编译之后相当于:

var hereOrThere;//申明前置了

hereOrThere = function() { // function expression
  return 'here';
};

alert(hereOrThere()); // alerts 'here'

hereOrThere = function() {
  return 'there';
};

参考 Frequently Misunderstood JavaScript Concepts The Syntax for Defining a Function is Significant

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
544 views
MongoDB Compass 图形界面管理工具初探

MongoDB Compass 图形界面管理工具初探

MongoDB灵活的模式和丰富的文档结构能够帮助开发人员使用丰富的数据结构快速开发应用。然而,这样的灵活性也有可能使得在一个已知的数据库中理解数据的结构变得困难。

直到现在,如果您想知道您数据的结构,您都不得不在命令行使用MongoDB Shell进行查询来查看数据。 MongoDB Compass 将是一个更好的方式。

什么是MongoDB Compass?

MongoDB 3.2引入了MongoDB Compass-一个图形化工具,能够帮助您在不需要知道MongoDB查询语法的前提下,便利地分析和理解您的数据库模式,并且帮助您可视化地构建查询。

来源: MongoDB Compass 图形界面管理工具初探 – 推酷

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
459 views
Outgoing port tester

Outgoing port tester

Outgoing port tester

This server listens on all TCP ports, allowing you to test any outbound TCP port.
You have reached this page on port 27017.
Your network allows you to use this port. (Assuming that your network is not doing advanced traffic filtering.)
Network service: unknown
Your outgoing IP: 27.115.15.106

Test a port using a command

$ telnet portquiz.net 27017
Trying …
Connected to portquiz.net.
Escape character is ‘^]’.
$ nc -v portquiz.net 27017
Connection to portquiz.net 27017 port [tcp/daytime] succeeded!
$ curl portquiz.net:27017
Port 27017 test successful!
Your IP: 27.115.15.106
$ wget -qO- portquiz.net:27017
Port 27017 test successful!
Your IP: 27.115.15.106
# For Windows PowerShell users
PS C:\> Test-NetConnection -InformationLevel detailed -ComputerName portquiz.net -Port 27017
Test a port using your browser

In your browser address bar: http://portquiz.net:XXXX

Examples:
http://portquiz.net:8080
http://portquiz.net:8
http://portquiz.net:666
I got complains that portquiz is not working on port 445. My hosting company OVH is probably blocking this port. Sorry about that. Feel free to contact them. See my blog post and OVH forum post (french).

Your browser can block network ports normally used for purposes other than Web browsing. In this case you should use the telnet or netcat commands to test the port.

Please also note that this server uses some port for real services (22, 25), so testing with your browser on those ports will not work.

Contact/feedback:

Marc MAURICE

See also:
Blog post on this topic and How it works
Firebind, a commercial tester. javascript test
outPorts, a tiny program to test a range of ports using portquiz

 

-end-

 

跳至工具栏