1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
// parameters are associated correctly
const retained1 = function ( func, obj ) { return func( obj ); };
retained1( obj => obj(), () => () => console.log( 'effect' ) )();
const retained2 = function ( func, obj ) { return func( obj ); };
retained2( obj => ({ foo: obj }), {} ).foo.bar.baz = 1;
// parameters and arguments have the same values
function retained3 ( x ) {
x.foo.bar = 1;
}
retained3( {} );
function retained4 ( x ) {
arguments[ 0 ].foo.bar = 1;
}
retained4( {} );
// assigning to an argument will change the corresponding parameter
function retained5 ( x ) {
arguments[ 0 ] = {};
x.foo.bar = 1;
}
retained5( { foo: {} } );
// assigning to a parameter will change the corresponding argument
function retained6 ( x ) {
x = {};
arguments[ 0 ].foo.bar = 1;
}
retained6( { foo: {} } );
// the number of arguments does not depend on the number of parameters
function retained7 ( x ) {
arguments[ 1 ].foo.bar = 1;
}
retained7( {}, {} );
|