jsの関数名は関数オブジェクトへのポインタなのでメモリを参照しているのでしょうか?
`
` では、手動で破壊するにはどうすればよいでしょうか?ブラウザをリサイクルする前にグローバル変数を閉じる必要がありますか?ありがとう###
迷茫2017-05-19 10:28:59
最初のvar a
会在stack
里面开一块空间,然后你将他赋给一个function
,是一个引用类型,于是又在heap
里面又申请一块空间存放function
,此时,stack
里面的a
存放的是function
のアドレス
その理由は以下の通りですb
赋值给a
,是将stack
里面a
指向的heap
里面function
的地址赋给b
,所以这就是为什么后来a
指向了null
,但是b
仍然指向之前heap
里面function
。
どうやって破壊するの? b
也设置为null
または他の値を変更するだけです。したがって、この種の変数にはグローバル変数を書かずに、ローカル変数を書くようにしてください。
滿天的星座2017-05-19 10:28:59
それはメモリへの参照ですか? この質問は少し広義すぎます。データはメモリに保存されているので、メモリを参照するのは自然なことです。しかし、メモリを参照するだけでは不十分です。データを保存するためのものであり、データ間の関係を反映することはできません。そのため、
メモリを直接参照するわけではありません。途中に隠れた処理が存在します。具体的な詳細はわかりませんが、レベルが低すぎます
さらに、リサイクルには 2 つの方法があります:
通常は方法 1 を使用してください。オーバーフローの心配はありません。データが一定量に達したときなど、さまざまなタイミングで自動リサイクルがトリガーされます。
黄舟2017-05-19 10:28:59
ガベージ コレクション メカニズムについて:
IE の古いバージョンでは、DOM は COM オブジェクトの形式であり、循環参照がある場合は参照カウントを使用してクリアされます。メモリを解放する機会はありません。
標準ブラウザでは、手動で参照を解放し、null に設定するだけでメモリを解放できます。
参照が逆参照されていない場合、メモリは実行環境が終了するまで解放されず、グローバル変数オブジェクトはグローバル実行環境が終了するまで解放されません。つまり、ブラウザが閉じるまで解放されません。 。