2017-10-08 6 views
0

strictモードでObject.freeze()を使用すると、フリーズしたオブジェクトのプロパティを変更しようとすると例外がスローされません。スローされ凍結されたオブジェクトを変異しようとフリーズオブジェクトが突然変異したときにObject.freezeがstrictモードで例外をスローしない

MDN saysTypeError

In strict mode such attempts will throw TypeErrors

ここでは、以下のいくつかの簡単なコードです:

'use strict'; 

//jshint esnext:true 
const func =() => { 
    const o = { id: 0 }; 
    Object.freeze(o); 
    o.id = 3; 
}; 

func(); 

デモ:https://jsbin.com/fobokipive/edit?js,console

コードがスローされませんが、任意TypeError。私はChromiumをベースにしたOperaを使用しています。

これは予期した動作ですか、何か間違っていますか?

答えて

3

正しく実行しています。この問題はJSBinにあるようです。 JSFiddle(as seen here)を通して全く同じコードを実行すると、エラーをスロー:

Uncaught TypeError: Cannot assign to read only property 'id' of object '#'

StackSnippetでそれを実行しても同じエラーが発生し:

'use strict'; 
 

 
//jshint esnext:true 
 
const func =() => { 
 
    const o = { id: 0 }; 
 
    Object.freeze(o); 
 
    o.id = 3; 
 
}; 
 

 
func();

そしてこのエラーはstrictモードでのみスローされます。

//jshint esnext:true 
 
const func =() => { 
 
    const o = { id: 0 }; 
 
    Object.freeze(o); 
 
    o.id = 3; 
 
}; 
 

 
func();

この情報がお役に立てば幸い! :)

+0

Seconded ..私はjsfiddleで同じことを見た。 – mituw16

関連する問題