◆ プロパティ(メソッド)のときは this が変わるので注意

var x = (flag ? obj.fn1 : obj.fn2)(true)
のように 条件演算子で 関数を選んで どっちの場合でも同じ引数で実行することってなくはないですよね

このような関数の場合は特に気にせず使えばいいです
var x = (flag ? func1 : func2)(true)
ですが true もしくは false の場合の関数がメソッドになっていた場合には注意が必要です

JavaScript では this という変数は 関数の状態(オブジェクトのプロパティか ローカル変数かなど)変わってきます
var obj = {
fn: function (){return this.val},
val: 100
}
window.val = 200
var fn = obj.fn
console.log(obj.fn())
console.log(fn())
100
200
fn という変数に代入して fn() と書いて実行すると obj.fn() とは違う結果になります

条件演算子でも 変数には入れてないですが 内部的には一時的に保存された関数を obj 以外の環境で実行しているので同じことになります
var obj = {
fn: function (){return this.val},
val: 100
}
window.val = 200
var fn = obj.fn
console.log(obj.fn())
console.log(fn())
console.log((true ? obj.fn :obj.fn)())
100
200
200