日本の業界団体において一番弱い会社に合わせて横一線に合わせる様に官庁が行政指導することを、護送船団になぞらえて護送船団方式と表現することがある。同項目を参照のこと。このような用例では一隻の船も脱落させない、必ず全員を守る方式であると誤解されているが、実際の護送船団は統計的に損害を抑制するための手段であって、本来の意味での護送船団方式は脱落者が0になることを目的としていない。
戦時中の敵の掃討を終えていない地域や、極端に治安の悪い地域ではトラックが単独で移動すると盗賊やゲリラなどの標的となり、Uボートに襲われた輸送船のように目的地に到着できない事例が多発してしまう。これに対抗するために戦車や装甲車、ガントラックなどで護衛した車列を組んで輸送を行う、このような集団を英語ではコンボイ（Convoy）と呼ぶ。このような集団を構成することで、小規模な盗賊やゲリラでは襲撃が困難な状況を作り出し、敵に襲撃を断念させることを最大の目的としている。そのため、危険度の高い場所では周囲の警戒と威圧のため、砲口や銃口を常に周囲に向けながら移動することがある。
冷戦構造下においては、ヨーロッパで東西の武力衝突が発生した際、NATO諸国にアメリカ本土から速やかに増援・補給が行われることが期待されており、大西洋を航行する護送船団の運航、防護について様々な検討が加えられていた。このほか1980年代にはイラン・イラク戦争でのタンカー戦争を受け、アメリカ海軍がクウェートのタンカーを護送するべく、アーネスト・ウィル作戦の作戦名で護送船団を組むといった事態も発生した。現在ではソマリア沖の海賊から民間船舶を防護するため、国際共同作戦であるアタランタ作戦の一環として、護送船団方式が採用されている。
第二次大戦中に潜水艦によって沈められた連合国、中立国商船のうち、30％が護衛船団に加わっており、60％は単独で航行し、10％が護衛船団を見失った船であった。
言語ごとにスコープのセマンティクスが異なるように、クロージャの定義も異なっている。汎用的な定義では、クロージャが捕捉する「環境」とは、あるスコープのすべての変数の束縛の集合である。しかし、この変数の束縛というものの意味も言語ごとに異なっている。命令型言語では、変数は値を格納するためのメモリ中の位置と束縛される。この束縛は変化せず、束縛された位置にある値が変化する。クロージャは束縛を捕捉しているので、そのような言語での変数への操作は、それがクロージャからであってもなくとも、同一のメモリ領域に対して実行される。例として、ECMAScriptを取り上げるとvar f, g;function foo(){  var x = 0;  f = function() { ++x; };  g = function() { --x; };  x = 1;  print(f()); // "2"}foo();g(); // "1"f(); // "2"関数 foo と2つのクロージャがローカル変数 x に束縛された同一のメモリ領域を使用していることに注意。一方、多くの関数型言語、例えばML、は変数を直接、値に束縛する。この場合、一度束縛された変数の値を変える方法はないので、クロージャ間で状態を共有する必要はない。単に同じ値を使うだけである。さらに、Haskellや、Common Lisp上に作られたCLAZYパッケージ(言語拡張)など、遅延評価を行う関数型言語では、変数は将来の計算結果に束縛される。例を挙げる。foo x y = let r = x / y          in (\z -> z + r)f = foo 1 0main = do putStr (show (f 123))r は計算 (x / y) に束縛されており、この場合は0による除算である。しかしながら、クロージャが参照しているのはその値ではなく計算であるので、エラーはクロージャが実行され、実際にその束縛を使おうと試みたときに現れる。さらなる違いは静的スコープである制御構文、C言語風の言語における return・break・continue などにおいて現れる。ECMAScriptなどの言語では、これらはクロージャ毎に束縛され、構文上の束縛を隠蔽する。つまり、クロージャ内からの return はクロージャを呼び出したコードに制御を渡す。しかしSmalltalkでは、このような動作はトップレベルでしか起こらず、クロージャに捕捉される。例を示して、この違いを明らかにする。"Smalltalk"foo  | xs |  xs := #(1 2 3 4).  xs do: [:x | ^x].  ^0bar  Transcript show: (self foo) "prints 1"// ECMAScriptfunction foo() {  var xs = new Array(1, 2, 3, 4);  xs.forEach(function(x) { return x; });  return 0;}print(foo()); // prints 0Smalltalkにおける ^ はECMAScriptにおける return にあたるものだと頭に入れれば、一目見た限りではどちらのコードも同じことをするように見える。違いは、ECMAScriptの例では return はクロージャを抜けるが関数 foo は抜けず、Smalltalkの例では ^ はクロージャだけではなくメソッド foo をも抜ける、という点である。後者の特徴はより高い表現力をもたらす。Smalltalkの do: は通常のメソッドであり、自然に制御構文が定義できている。一方、ECMAScriptでは return の意味が変わってしまうので、同じ目的には foreach という新しい構文を導入しなければならない。しかし、スコープを越えて生存する継続には問題もある。foo  ^[ x: | ^x ]bar  | f |  f := self foo.  f value: 123 "error!"上の例でメソッド foo が返すブロックが実行されたとき、foo から値を返そうとする。しかし、foo の呼び出しは既に完了しているので、この操作はエラーとなる。