Google Chromeブラウザでよくある問題
2167 ワード
もっと読む
Google Chrome雷区の一つ:変わったeval実現
実行コード:
ecma 262 rdにはエイリアスを引用して呼び出すべきではないという言葉があります.
しかし、これまでの実現にはこの言葉を気にしていませんでした.
chromeは完全にecmaの制限を厳守していませんが、やはり理学エコマの最適化指導を活用しているようです.
いい学生です.さすがに今一番早いjsエンジンです.
Chromeはevalの実現において、より標準に近いようです.
しかし、これはchromeの一つのバグかもしれません.いくつかの明主のよだれが水没した後、より多くの事実基準に適合するようになるかもしれません.
Google Chrome雷区の二:中国語に注意
var x={
「日本語」:「安全」
)
圧縮後は:
var x={
日本语:危ないです
)
rhinoベースの圧縮ツール(JSA、YUI-Commprestor)は、いずれも自動的に上記の最適化を行いますが、現在のところchromeの中国語コードへのサポートは限られているようです.
Google Chrome雷区の三ーー莫動argmentsオブジェクト
argmentsとパラメータ変数の関連
javascript:+function(a){var a='false';alert(argments[0])}(true)
出力は:falseであり、
firefox 3もそうです.
javascript:+function(a){Aray.prototype.splice.call(argments,0,1);alert(a)}(1)
出力はundefined他のブラウザではありません.
ECMA標準の説明をもう一度読んでください.
10.1.8 Agments Object
When control enters an execution context for function code、an argments object is created and initialised as follows:
* The value of the internal[Prototype]property of the argment is the original Object oject、the one that is the initial value of Object.prototype(see 15.2.3.1)
* A property is created with name calee and property atributes.The initial value of this property the Funct being executed.This allows anymous functions to be recursive.
* A property is created with name length and property atributes.The initial value of this property the number of actual parameter values supplied by the caler.
* For each non-negative integer,arg,less than the value of the length property,a property is created with name Tostring(arg)and property atributes.The initial value of this property the valuntthe second to arg=1,and so on.In the case when arg is less than the number of formal parameters for the Funct object,this property shares value with the coreporting property
Googleの実現は最も標準に近いというべきです.
他のブラウザは多かれ少なかれ実現できませんでした.
この時はなぜですか?もちろん彼の理由があります.
私たちができることは、開発中にこのオブジェクトを動かさないことです.
Google Chrome雷区の一つ:変わったeval実現
実行コード:
javascript:var eval2 = eval;with({a:1})eval2("a+2")
chromeで運行するのは間違いを報告します.ecma 262 rdにはエイリアスを引用して呼び出すべきではないという言葉があります.
しかし、これまでの実現にはこの言葉を気にしていませんでした.
chromeは完全にecmaの制限を厳守していませんが、やはり理学エコマの最適化指導を活用しているようです.
いい学生です.さすがに今一番早いjsエンジンです.
Chromeはevalの実現において、より標準に近いようです.
しかし、これはchromeの一つのバグかもしれません.いくつかの明主のよだれが水没した後、より多くの事実基準に適合するようになるかもしれません.
Google Chrome雷区の二:中国語に注意
var x={
「日本語」:「安全」
)
圧縮後は:
var x={
日本语:危ないです
)
rhinoベースの圧縮ツール(JSA、YUI-Commprestor)は、いずれも自動的に上記の最適化を行いますが、現在のところchromeの中国語コードへのサポートは限られているようです.
Google Chrome雷区の三ーー莫動argmentsオブジェクト
argmentsとパラメータ変数の関連
javascript:+function(a){var a='false';alert(argments[0])}(true)
出力は:falseであり、
firefox 3もそうです.
javascript:+function(a){Aray.prototype.splice.call(argments,0,1);alert(a)}(1)
出力はundefined他のブラウザではありません.
ECMA標準の説明をもう一度読んでください.
10.1.8 Agments Object
When control enters an execution context for function code、an argments object is created and initialised as follows:
* The value of the internal[Prototype]property of the argment is the original Object oject、the one that is the initial value of Object.prototype(see 15.2.3.1)
* A property is created with name calee and property atributes.The initial value of this property the Funct being executed.This allows anymous functions to be recursive.
* A property is created with name length and property atributes.The initial value of this property the number of actual parameter values supplied by the caler.
* For each non-negative integer,arg,less than the value of the length property,a property is created with name Tostring(arg)and property atributes.The initial value of this property the valuntthe second to arg=1,and so on.In the case when arg is less than the number of formal parameters for the Funct object,this property shares value with the coreporting property
Googleの実現は最も標準に近いというべきです.
他のブラウザは多かれ少なかれ実現できませんでした.
この時はなぜですか?もちろん彼の理由があります.
私たちができることは、開発中にこのオブジェクトを動かさないことです.