2014-02-16 97 views
5

我一直無法在任何書籍,手冊或網站中找到對此聲明的任何引用。據我所知,它的功能正如//評論。例如:- >在JavaScript中做什麼?

console.log("1"); 
--> console.log("2"); 
console.log("3"); 

將打印

1 
3 

什麼我好奇的是究竟-->//之間的區別是什麼,如果存在,也是爲什麼-->似乎所有完全不存在我見過的JavaScript引用 - 我發現它的唯一原因是因爲我意外地將它輸入到Adobe Dreamweaver中,並且它被突出顯示爲註釋。謝謝!編號:Here is a functional jsFiddle demonstrating the behavior

編輯2:我進一步測試了,我發現了一些東西。

  • 這隻適用於只有兩個破折號。 ->--->會拋出錯誤。
  • 這隻適用於「大於」符號。 --<會引發錯誤。
  • 這不會在一行的中間或結尾處起作用。 console.log("1"); --> console.log("2");會引發錯誤。
+1

可能與這個衆所周知的問題有關? http://stackoverflow.com/questions/1642028/what-is-the-name-of-this-operator –

+0

鉻的調試器說它的illigal字符。 –

+0

@SumanBogati真的嗎?我的Chrome控制檯(版本32.0.1700.107)完全按照我在文章中描述的方式對待它。你使用的是什麼版本的Chrome? – Hydrothermal

回答

6

我的猜測是JavaScript引擎一如既往地寬容,默默無視線條,因爲它看起來像是HTML評論(<!-- -->)的末尾。以HTML格式內嵌的JavaScript在歷史上被封裝在HTML註釋中,以便不支持JavaScript的瀏覽器不會嘗試解析它。


編輯:

我做了一些研究,而這的確是這樣的。

從V8的scanner.cc

如果有一個HTML註釋結束「 - >」在 行的開頭(與在它前面的只有空白),我們治療的其餘 行作爲評論。這符合SpiderMonkey處理它的方式 。

從犀牛Comment.java

的JavaScript有效有五個註釋類型:

  1. // line comments
  2. /* block comments */
  3. /** jsdoc comments */
  4. <!-- html-open line comments
  5. ^\s*--> html-close line comments

前三應該熟悉Java程序員。 JsDoc評論 實際上只是阻止評論與一些約定格式 內的評論分隔符。行和塊註釋在 Ecma-262規範中有描述。

注意,-->評論是ECMA-262規範的一部分。

+0

我同意,然後+1 – Allende

-1

這不是一條評論。如果你在代碼中看到它是一個註釋,那麼它可能顯示爲某種懸掛乍得HTML註釋而不是普通的「//」。

發生了什麼事在這種情況下是您使用的不是更大的比較,然後減去1,這裏有一些例子......

var x = 3; var y = 3; console.log(x --> y); 

現在2

x是如果你放置正常的評論字符「//」,你會得到一個語法錯誤(你應該)

這是作爲註釋工作的原因是因爲它作爲未定義返回。這是不安全的作爲評論。奇怪的是,它在Chrome中運行良好,如果你用「 - >」開始行,你可以在它上面扔各種各樣的角色。

--> something for nothing [email protected]#@#%$#%^$&%^&*()_+_=-=[]\];'\||?>;';;; alert('test'),,143187132458 

但是,在IE 11中,它始終是一個語法錯誤。非常酷的發現

+2

在OP的例子中,是否在' - >'之前看到任何操作符? FWIW,' - > console.log(...)'('--'和'>'之間的空格會引發語法錯誤,而'console.log(x - > y);'不會。 –

+0

-1因爲這個原因,它不會給出錯誤的結果,你使用變量-1的方式只會在你使用變量後被減少,在比較過程中,x仍然是3,因此相等。var x = 3; var y = 3 ; console.log(x - == y);'給出真正的 – bicycle

+0

@FelixKling空間上的好點 –