JavaScriptの(function(){})()コンストラクトとは何ですか?

827
Exitos 2011-11-23 04:19.

以前はこれが何を意味するのか知っていましたが、今は苦労しています...

これは基本的に言っているのdocument.onloadですか?

(function () {

})();

25 answers

886
gion_13 2011-11-23 04:21.

これは、即時呼び出し関数式、または略してIIFEです。作成後すぐに実行されます。

これは、イベント(などdocument.onload)のイベントハンドラーとは何の関係もありません。
括弧の最初のペア内の部分について考えてみます。....これは通常の関数式です。次に、最後のペアを見てください。これは通常、関数を呼び出すために式に追加されます。この場合、私たちの前の表現。(function(){})();(function(){})();

このパターンは、グローバル名前空間の汚染を回避しようとするときによく使用されます。これは、IIFE内で使用されるすべての変数(他の通常の関数と同様)がスコープ外に表示されないためです。
これが、おそらく、この構造をのイベントハンドラーと混同した理由です。これは、次window.onloadのようによく使用されるためです。

(function(){
  // all your code here
  var foo = function() {};
  window.onload = foo;
  // ...
})();
// foo is unreachable here (it’s undefined)

Guffaによって提案された修正:

関数は、解析された後ではなく、作成された直後に実行されます。スクリプトブロック全体は、その中のコードが実行される前に解析されます。また、コードの解析は、コードが実行されることを自動的に意味するわけではありません。たとえば、IIFEが関数内にある場合、関数が呼び出されるまで実行されません。

更新これは非常に人気のあるトピックであるため、IIFEはES6の矢印関数を使用して記述できることにも言及する価値があります(Gajusがコメントで指摘しているように):

((foo) => {
 // do something with foo here foo
})('foo value')
114
Guffa 2011-11-23 04:25.

これは、作成された直後に実行される匿名関数です。

これは、変数に割り当てて、変数なしでのみ使用した場合と同じです。

var f = function () {
};
f();

jQueryには、あなたが考えているかもしれない同様の構造があります。

$(function(){
});

これは、readyイベントをバインドする短い形式です。

$(document).ready(function(){
});

しかし、上記の2つの構成はIIFEではありません。

59
令狐葱 2014-05-29 17:09.

即時呼び出し関数式(IIFE)は、即時に関数を呼び出します。これは単に、関数が定義の完了直後に実行されることを意味します。

さらに3つの一般的な表現:

// Crockford's preference - parens on the inside
(function() {
  console.log('Welcome to the Internet. Please follow me.');
}());

//The OPs example, parentheses on the outside
(function() {
  console.log('Welcome to the Internet. Please follow me.');
})();

//Using the exclamation mark operator
//https://stackoverflow.com/a/5654929/1175496
!function() {
  console.log('Welcome to the Internet. Please follow me.');
}();

戻り値に特別な要件がない場合は、次のように記述できます。

!function(){}();  // => true
~function(){}(); // => -1
+function(){}(); // => NaN
-function(){}();  // => NaN

または、次のようにすることもできます。

~(function(){})();
void function(){}();
true && function(){ /* code */ }();
15.0, function(){ /* code */ }();

あなたも書くことができます:

new function(){ /* code */ }
31.new function(){ /* code */ }() //If no parameters, the last () is not required
32
solendil 2011-11-23 04:21.

匿名関数を宣言し、それを呼び出します。

(function (local_arg) {
   // anonymous function
   console.log(local_arg);
})(arg);
32
Naftali aka Neal 2011-11-23 04:21.

つまり、すぐに実行します。

だから私がそうするなら:

var val = (function(){
     var a = 0;  // in the scope of this function
     return function(x){
         a += x;
         return a;
     };
})();

alert(val(10)); //10
alert(val(11)); //21

フィドル: http://jsfiddle.net/maniator/LqvpQ/


2番目の例:

var val = (function(){
     return 13 + 5;
})();

alert(val); //18
29
Usman 2016-10-30 11:31.

この構成は、即時呼び出し関数式(IIFE)と呼ばれ、すぐに実行されることを意味します。インタプリタがその関数に到達すると自動的に呼び出される関数と考えてください。

最も一般的なユースケース:

最も一般的な使用例の1つは、を介して作成された変数のスコープを制限することですvar。を介しvarて作成された変数のスコープは関数に制限されているため、このコンストラクト(特定のコードの関数ラッパー)は、変数スコープがその関数から漏れないようにします。

次の例でcountは、はすぐに呼び出される関数の外部では使用できません。つまり、スコープはcount関数から漏れません。ReferenceErrorとにかくすぐに呼び出された関数の外でそれにアクセスしようとすると、を取得する必要があります。

(function () { 
    var count = 10;
})();
console.log(count);  // Reference Error: count is not defined

ES6代替(推奨)

ES6では、とを介して変数を作成できるようにletなりましたconst。それらは両方ともブロックスコープです(var関数スコープとは異なります)。

したがって、前述のユースケースでIIFEの複雑な構成を使用する代わりに、変数のスコープが目的のブロックから漏れないようにするための、はるかに単純なコードを記述できるようになりました。

{ 
    let count = 10;
}
console.log(count);  // ReferenceError: count is not defined

この例では、コードのブロックに限定letするcount変数を定義するために使用countし、中括弧を使用して作成しました{...}

私はそれを「カーリー刑務所」と呼んでいます。

17
Gurucharan M K 2016-05-20 01:28.
(function () {
})();

これはIIFE(即時呼び出し関数式)と呼ばれます。有名なJavaScriptデザインパターンの1つであり、現代のモジュールパターンの核心です。名前が示すように、作成された直後に実行されます。このパターンは、実行の分離またはプライベートスコープを作成します。

ECMAScript 6より前のJavaScriptは字句スコープを使用していたため、ブロックスコープのシミュレーションにはIIFEが使用されていました。(ECMAScript 6では、letおよびconstキーワードの導入によりブロックスコープが可能です。)字句スコープに関する問題のリファレンス

IIFEでブロックスコープをシミュレートする

生命維持のを使用した場合のパフォーマンス上の利点は次のように一般的に使用されるグローバルオブジェクトを渡す機能であるwindowdocumentスコープのルックアップを減らすことによって、引数として、など。(JavaScriptはローカルスコープでプロパティを検索し、グローバルスコープまでチェーンを上っていくことを忘れないでください)。したがって、ローカルスコープ内のグローバルオブジェクトにアクセスすると、以下のようにルックアップ時間が短縮されます。

(function (globalObj) {
//Access the globalObj
})(window);
14
Santosh Pillai 2018-05-15 15:27.

これは、Javascriptで即時に呼び出される関数式です。

JSのIIFEを理解するために、それを分解してみましょう。

  1. :値を返すもの
    例:Chromeコンソールで次のことを試してください。これらはJSでの表現です。
a = 10 
output = 10 
(1+3) 
output = 4
  1. 関数式
    例:
// Function Expression 
var greet = function(name){
   return 'Namaste' + ' ' + name;
}

greet('Santosh');

関数式のしくみ:
-JSエンジンを初めて実行するとき(実行コンテキスト-作成フェーズ)、この関数(=上記の右側)は実行されず、メモリに保存されません。変数「greet」には、JSエンジンによって「undefined」値が割り当てられます。
-実行中(実行コンテキスト-実行フェーズ)、関数オブジェクトはオンザフライで作成され(まだ実行されていません)、「greet」変数に割り当てられ、「greet( 'somename')」を使用して呼び出すことができます。

3.即時呼び出し関数式:

例:

// IIFE
var greeting = function(name) {
    return 'Namaste' + ' ' + name;
}('Santosh')

console.log(greeting)  // Namaste Santosh. 

IIFEの仕組み
-関数宣言の直後の「()」に注意してください。すべての関数オブジェクトには、呼び出し可能な「CODE」プロパティが付加されています。そして、 '()'中括弧を使用してそれを呼び出す(または呼び出す)ことができます。
-したがって、ここでは、実行中に(実行コンテキスト-実行フェーズ)、関数オブジェクトが作成され、同時に実行されます-したがって、関数オブジェクトではなく、greeting変数に戻り値(文字列)があります。

JSにおけるIIFEの典型的なユースケース:

次のIIFEパターンが非常に一般的に使用されます。

// IIFE 
// Spelling of Function was not correct , result into error
(function (name) {
   var greeting = 'Namaste';
   console.log(greeting + ' ' + name);
})('Santosh');
  • ここで2つのことをしています。a)関数式を中括弧()で囲みます。これは、()内に配置されたものが式(この場合は関数式)であり、有効なコードであることを構文パーサーに通知します。
    b)この関数の最後に()を使用して、同時にこの関数を呼び出しています。

したがって、この関数は同時に作成され実行されます(IIFE)。

IIFEの重要なユースケース:

IIFEはコードを安全に保ちます。
-関数であるIIFEには独自の実行コンテキストがあります。つまり、IIFE内で作成されるすべての変数はこの関数に対してローカルであり、グローバル実行コンテキストと共有されません。

アプリケーションでiife.jsと一緒に使用されている別のJSファイル(test1.js)があるとします(以下を参照)。

// test1.js

var greeting = 'Hello';

// iife.js
// Spelling of Function was not correct , result into error
(function (name) { 
   var greeting = 'Namaste';
   console.log(greeting + ' ' + name);
})('Santosh');

console.log(greeting)   // No collision happens here. It prints 'Hello'.

したがって、IIFEは、意図せずにグローバルオブジェクトと衝突しない安全なコード作成するのに役立ちます

13
Aldo Stracquadanio 2011-11-23 04:22.

いいえ、この構成は名前付けのスコープを作成するだけです。あなたがそれを部分的に壊すならば、あなたはあなたが外部を持っているのを見ることができます

(...)();

これは関数の呼び出しです。括弧内には次のものがあります。

function() {}

それは無名関数です。コンストラクト内でvarを使用して宣言されたものはすべて、同じコンストラクト内でのみ表示され、グローバル名前空間を汚染しません。

6
James Hill 2011-11-23 04:21.

これは自己呼び出し型の無名関数です。

自己呼び出し関数のW3Schoolsの説明を確認してください。

関数式は「自己呼び出し」にすることができます。

自己呼び出し式は、呼び出されることなく自動的に呼び出されます(開始されます)。

式の後に()が続く場合、関数式は自動的に実行されます。

関数宣言を自己呼び出しすることはできません。

6
Md. Mahbubul Haque 2015-03-15 21:28.

これは自己呼び出し型の匿名関数です。定義されている間に実行されます。つまり、この関数は定義されており、定義の直後に呼び出されます。

構文の説明は次のとおりです。最初の()括弧内の関数は名前のない関数であり、次の();括弧によって、定義されたときに呼び出されていることがわかります。そして()、最初の括弧内にある関数で取得されるこの2番目の括弧内の任意の引数を渡すことができます。この例を参照してください。

(function(obj){
    // Do something with this obj
})(object);

ここで、渡した「オブジェクト」は、関数のシグネチャで取得しているため、「obj」によって関数内でアクセスできます。

5
Jim Flood 2017-02-18 18:57.

ここから始める:

var b = 'bee';
console.log(b);  // global

それを関数に入れると、もはやグローバルではなくなります-あなたの主な目標です。

function a() {
  var b = 'bee';
  console.log(b);
}
a();
console.log(b);  // ReferenceError: b is not defined -- *as desired*

すぐに関数を呼び出します--oops:

function a() {
  var b = 'bee';
  console.log(b);
}();             // SyntaxError: Expected () to start arrow function, but got ';' instead of '=>'

構文エラーを回避するには、括弧を使用します。

(function a() {
  var b = 'bee';
  console.log(b);
})(); // OK now

関数名は省略できます。

(function () {    // no name required
  var b = 'bee';
  console.log(b);
})();

それ以上に複雑にする必要はありません。

3
Daniel 2014-05-18 19:19.

自己実行関数は通常、コンテキストをカプセル化し、名前の共謀を回避するために使用されます。(function(){..})()内で定義する変数はグローバルではありません。

コード

var same_name = 1;

var myVar = (function() {
    var same_name = 2;
    console.log(same_name);
})();

console.log(same_name);

この出力を生成します:

2
1

この構文を使用することで、JavaScriptコードの他の場所で宣言されたグローバル変数との衝突を回避できます。

2
usoban 2011-11-23 04:24.

自己実行型の無名関数。作成されるとすぐに実行されます。

これが役立つ短いダミーの例は次のとおりです。

function prepareList(el){
  var list = (function(){
    var l = []; 
    for(var i = 0; i < 9; i++){
     l.push(i);
    }
    return l;
  })();

  return function (el){
    for(var i = 0, l = list.length; i < l; i++){
      if(list[i] == el) return list[i];
    }
    return null;
  }; 
} 

var search = prepareList();
search(2);
search(3);

したがって、リストを毎回作成する代わりに、一度だけ作成します(オーバーヘッドが少なくなります)。

2
Noname 2019-07-18 03:21.

これは、IIFE-即時呼び出し関数式と呼ばれます。これは、その構文と使用法を示す例です。これは、変数の使用を関数までのみスコープするために使用され、それを超えることはありません。

(function () {
  function Question(q,a,c) {
    this.q = q;
    this.a = a;
    this.c = c;
  }

  Question.prototype.displayQuestion = function() {
    console.log(this.q);
    for (var i = 0; i < this.a.length; i++) {
      console.log(i+": "+this.a[i]);
    }
  }

  Question.prototype.checkAnswer = function(ans) {
    if (ans===this.c) {
      console.log("correct");
    } else {
      console.log("incorrect");
    }
  }

  var q1 = new Question('Is Javascript the coolest?', ['yes', 'no'], 0);
  var q2 = new Question('Is python better than Javascript?', ['yes', 'no', 'both are same'], 2);
  var q3 = new Question('Is Javascript the worst?', ['yes', 'no'], 1);

  var questions = [q1, q2, q3];

  var n = Math.floor(Math.random() * questions.length)

  var answer = parseInt(prompt(questions[n].displayQuestion()));
  questions[n].checkAnswer(answer);
})();
2
Lord 2020-05-14 08:58.

これは関数式であり、即時呼び出し関数式(IIFE)の略です。IIFEは、作成直後に実行される関数です。したがって、関数が呼び出されて実行されるまで待機する必要があるため、IIFEはすぐに実行されます。例によってIIFEを構築してみましょう。2つの整数を引数として取り、合計を返すadd関数があるとすると、add関数をIIFEにできます。

ステップ1:関数を定義する

function add (a, b){
    return a+b;
}
add(5,5);

ステップ2:関数宣言全体を括弧で囲んで関数を呼び出します

(function add (a, b){
    return a+b;
})
//add(5,5);

ステップ3:関数をすぐに呼び出すには、呼び出しから「追加」テキストを削除するだけです。

(function add (a, b){
    return a+b;
})(5,5);

IFFEを使用する主な理由は、関数内にプライベートスコープを保持することです。確認したいJavaScriptコード内で、グローバル変数をオーバーライドしていないことを確認します。グローバル変数をオーバーライドする変数を誤って定義する場合があります。例を挙げてみましょう。iffe.htmlというhtmlファイルがあり、bodyタグ内のコードが-であるとします。

<body>
    <div id = 'demo'></div>
    <script>
        document.getElementById("demo").innerHTML = "Hello JavaScript!";
    </script> 
</body>

さて、上記のコードは質問なしで実行されます。ここで、documentという名前の変数を誤ってまたは意図的にクリアしたと仮定します。

<body>
    <div id = 'demo'></div>
    <script>
        document.getElementById("demo").innerHTML = "Hello JavaScript!";
        const document = "hi there";
        console.log(document);
    </script> 
</body>

あなたはにendupうにSyntaxError:非設定可能なグローバルプロパティ文書の再宣言を。

ただし、変数名のドキュメントをクリアしたい場合は、IFFEを使用して行うことができます。

<body>
    <div id = 'demo'></div>
    <script>
        (function(){
            const document = "hi there";
            this.document.getElementById("demo").innerHTML = "Hello JavaScript!";
            console.log(document);
        })();
        document.getElementById("demo").innerHTML = "Hello JavaScript!";
    </script> 
</body>

出力:

別の例で試してみましょう。次のような計算機オブジェクトがあるとします。

<body>
    <script>
        var calculator = {
            add:function(a,b){
                return a+b;
            },
            mul:function(a,b){
                return a*b;
            }
        }
        console.log(calculator.add(5,10));
    </script> 
</body>

それは魅力のように機能しています。誤って電卓オブジェクトの値を再割り当てした場合はどうなりますか。

<body>
    <script>
        var calculator = {
            add:function(a,b){
                return a+b;
            },
            mul:function(a,b){
                return a*b;
            }
        }
        console.log(calculator.add(5,10));
        calculator = "scientific calculator";
        console.log(calculator.mul(5,5));
    </script> 
</body>

はい、TypeErrorになります:calculator.mulは関数iffe.htmlではありません

しかし、IFFEの助けを借りて、別の変数名計算機を作成して使用できるプライベートスコープを作成できます。

<body>
    <script>
        var calculator = {
            add:function(a,b){
                return a+b;
            },
            mul:function(a,b){
                return a*b;
            }
        }
        var cal = (function(){
            var calculator = {
                sub:function(a,b){
                    return a-b;
                },
                div:function(a,b){
                    return a/b;
                }
            }
            console.log(this.calculator.mul(5,10));
            console.log(calculator.sub(10,5));
            return calculator;
        })();
        console.log(calculator.add(5,10));
        console.log(cal.div(10,5));
    </script> 
</body>

出力:

1
bpjoshi 2017-01-15 22:13.

IIFE(即時呼び出し関数式)は、スクリプトがロードされて終了するとすぐに実行される関数です。

iife.jsという名前のファイルに記述された以下の関数について考えてみます。

(function(){
       console.log("Hello Stackoverflow!");
   })();

上記のコードは、iife.jsをロードするとすぐに実行され、「Hello Stackoverflow!」と出力されます。'開発ツールのコンソールで。

詳細な説明については、即時呼び出し関数式(IIFE)を参照してください。

1
Shishir Arora 2016-08-12 11:02.

もう1つのユースケースは、キャッシュオブジェクトがグローバルではないメモ化です。

var calculate = (function() {
  var cache = {};
  return function(a) {

    if (cache[a]) {
      return cache[a];
    } else {
      // Calculate heavy operation
      cache[a] = heavyOperation(a);
      return cache[a];
    }
  }
})();
1
Willem van der Veen 2018-09-12 07:07.

次のコード:

(function () {

})();

即時呼び出し関数式(IIFE)と呼ばれます

( yourcode )Javascriptの演算子が式に強制するため、関数式と呼ばれます。関数式関数宣言の違いは次のとおりです。

// declaration:
function declaredFunction () {}

// expressions:

// storing function into variable
const expressedFunction = function () {}

// Using () operator, which transforms the function into an expression
(function () {})

式は、単一の値に評価できる一連のコードです。上記の例の式の場合、この値は単一の関数オブジェクトでした。

関数オブジェクトに評価される式ができたら、すぐに()演算子を使用して関数オブジェクトを呼び出すことができます。例えば:

(function() {

  const foo = 10;        // all variables inside here are scoped to the function block
  console.log(foo);

})();

console.log(foo);  // referenceError foo is scoped to the IIFE

なぜこれが便利なのですか?

大規模なコードベースを処理している場合、および/またはさまざまなライブラリをインポートしている場合、名前の競合が発生する可能性が高くなります。IIFE内で関連している(したがって同じ変数を使用している)コードの特定の部分を記述している場合、すべての変数と関数名はIIFEの関数ブラケットにスコープされます。これにより、名前の競合の可能性が減り、不注意に名前を付けることができます(たとえば、接頭辞を付ける必要がありません)。

0
abdulbarik 2017-07-23 07:41.

即時呼び出し関数式(IIFE)は、作成されるとすぐに実行される関数です。イベントや非同期実行とは関係ありません。以下に示すように、IIFEを定義できます。

(function() {
     // all your code here
     // ...
})();

括弧の最初のペアfunction(){...}は、括弧内のコードを式に変換します。括弧の2番目のペアは、式の結果の関数を呼び出します。

IIFEは、自己呼び出し型の匿名関数として説明することもできます。最も一般的な使用法は、varを介して作成された変数のスコープを制限するか、名前の衝突を回避するためにコンテキストをカプセル化することです。

0
kiwicomb123 2017-11-23 08:03.

自己呼び出し無名関数が使用される理由は、呼び出されることを意図したコードを「セットアップ」するため、他のコードから呼び出されてはならないためです(関数と変数にスコープを与えるとともに)。

つまり、プログラムの最初に「クラスを作成する」プログラムのようなものです。インスタンス化された後(自動的に)、使用できる関数は無名関数によって返される関数だけです。ただし、他のすべての関数は非表示の関数は、状態(スコープの作成中に設定された変数)とともに引き続き存在します。

とてもかっこいい。

0
S.. 2020-04-11 22:38.

ES6構文の場合(簡単な例を探してこのページにアクセスし続けるので、自分で投稿します):

// simple
const simpleNumber = (() => {
  return true ? 1 : 2
})()

// with param
const isPositiveNumber = ((number) => {
  return number > 0 ? true : false
})(4)
0
Noname 2020-04-21 01:06.

この関数は自己呼び出し関数と呼ばれます。自己呼び出し(自己実行とも呼ばれる)関数は、定義の直後に呼び出される(呼び出される)名前のない(匿名)関数です。詳細はこちら

これらの関数が行うことは、関数が定義されると、関数がすぐに呼び出されることです。これにより、(別の行で呼び出す場合と比較して)時間と余分なコード行が節約されます。

次に例を示します。

(function() {
    var x = 5 + 4;
    console.log(x);
})();

0
Thomas Williams 2020-05-03 02:57.

これは、これを使用する理由のより詳細な説明です。

「IIFEを使用する主な理由は、データのプライバシーを取得することです。JavaScriptのvarは変数をそれらを含む関数にスコープするため、IIFE内で宣言された変数は外部からアクセスできません。」

http://adripofjavascript.com/blog/drips/an-introduction-to-iffes-immediately-invoked-function-expressions.html

0
Omkar76 2020-10-03 04:04.

ここにはすでに多くの良い答えがありますが、ここに私の2セントがあります:p


IIFE(即時呼び出し関数式)は、次の目的で使用できます。

  1. グローバル名前空間での汚染の回避。

    IIFE(または通常の関数)で定義された変数は、グローバルスコープの定義を上書きしません。

  2. 外部コードによるアクセスからコードを保護します。

    IIFE内で定義したものはすべて、IIFE内でのみアクセスできます。コードが外部コードによって変更されるのを防ぎます。関数の結果として明示的に返すもの、または外部変数の値として設定したものだけが、外部コードからアクセスできます。

  3. 繰り返し使用する必要のない関数に名前を付けることは避けてください。IIFEパターンで名前付き関数を使用することは可能ですが、通常は繰り返し呼び出す必要がないため、使用しません。

  4. 以下のためのユニバーサル・モジュール定義の多くのJSライブラリで使用されています。詳細については、この質問を確認してください。


IIFEは通常、次のように使用されます。

(function(param){
   //code here
})(args);

()無名関数を囲む括弧を省略し、無名関数のvoid前に演算子を使用できます。

void function(param){
   //code here
}(args);

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ジョー・バロウロー対ウェイド事件の転覆に対応するNFLは、言葉を言わないことで、腹立たしいが予測可能なPRの結果でした。

別の日、別のヒンジのないLIV記者会見

別の日、別のヒンジのないLIV記者会見

(lから)パット・ペレス、ブルックス・ケプカ、パトリック・リードサウジアラビアのLIVゴルフリーグのさらに別の信じられないほどの記者会見で、スポーツのファンはブルックス・ケプカからでたらめな吐き気と質問回避の驚異的なマスタークラスを受けました。パトリックリード、ブライソンデシャンボー、パットペレス、最近のPGAツアーの脱北者。

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

レッドダガーとマーベルさんがチームを組んでいます。

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

暗号業界最大の沈没船の1つであるスリーアローズキャピタルは、ついにその悲惨さから解放されています。火曜日に、不良債権ヘッジファンドは、債権者からの返済を要求する訴訟の高まりに応えて、バージンアイランド裁判所によって清算を命じられました彼らが3ACに行ったローン。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

Suffragettes Indicam #3: Junho

Suffragettes Indicam #3: Junho

Mais um mês se findando — e metade do ano de 2022 já passou. Sabe o que isso significa? Não, não é hora de verificar se você está cumprindo com suas resoluções de Ano Novo.

Calin (Estudo de Caso UX/UI Design)

Calin (Estudo de Caso UX/UI Design)

Este projeto foi desenvolvido a partir de briefing fictício disponibilizado pelo site Tifólio, uma plataforma para designers. Briefing Matriz CSD Como ponto inicial utilizei como base algumas notícias atuais sobre meios de pagamento digital e com essas informações desenvolvi a Matriz CSD.

多元宇宙—Junø

多元宇宙—Junø

チェーン間アカウントがJunoに登場します。異なるブロックチェーン間でスマートコントラクトの構成可能性と真の相互運用性を提供します。

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

1.ドラマを見た後、起業する考えはありますか?あなたのビジネスはボトルネックに遭遇しましたか?方向性がなくてわからない場合は、ドラマを追いかけて行くことを心からお勧めします。(?)ブラフではなく、最も完璧なビジネス例を隠すドラマがあります。2.ブレイキング・バッドとその弁護士ドラマ「ブレイキング・バッド」を見た友人たちは、演劇の中で、穏やかな表情で、弁護士のソウル・グッドマンに深く感銘を受けなければなりません。口を開けて、感覚の弱い傭兵の性格を持っています。道徳の面で、サル・グッドマンは無意識のうちに劇に欠かせない役割を果たし、彼自身のシリーズ「絶望的な弁護士」(ベター・コール・ソール)を生み出しました。ウェントウのテキストとビデオは、劇中のソウル・グッドマンのテレビコマーシャルです。製品(サービス)、競争戦略、市場ポジショニング、ブランド名、ターゲット顧客グループ、コミュニケーション軸から広告まで、サル・グッドマンの役割のビジネス設定は、「最低」と見なすことができる超超超超超超完全です。ブランドコミュニケーションのコスト」「変化」のモデル。なぜ?私の分析をご覧ください。3.ソウル・グッドマンの「事業戦略」1.基本情報ブランド名:Saul Goodman製品:法律相談サービス対象顧客:麻薬中毒、飲酒運転、事故など。法律知識の欠如は、一般的に公立弁護士にしか余裕がなく、真面目な弁護士も「特別な法律を持つ消費者」を避けます。恐れてはいけない「​​ニーズ」。コミュニケーションの主軸:この国のすべての男性、女性、子供は有罪判決を受けるまで無実だと思います。地域:アルバカーキ市スローガン:Thrallに電話したほうがいいです!(ベター・コール・ソール)広告:2つの可能性のある犯罪状況をシミュレートします+サウルの主張+サウルのスローガン2をより適切に呼び出します。

Language