SlideShare a Scribd company logo
1 of 29
Download to read offline
変数・演算子・文 
開発部 
てるー
アジェンダ 
1. 変数 
2. +演算子 
3. 関数定義式と関数宣言文
アジェンダ 
1. 変数 
2. +演算子 
3. 関数定義式と関数宣言文
変数の宣言 
var x; 
var i, sum; 
var message = ‘hello’; 
var a = 0, b = 0, c = 0;
グローバル変数とローカル変数 
● グローバル変数 
○ 変数の有効範囲はプログラム全体 
● ローカル変数 
○ 変数の有効範囲は変数が宣言された関数の中に限定
グローバル変数とローカル変数 
var g1 = ‘global’; // グローバル変数 
var checkscope = function() { 
var local = ‘local’; // ローカル変数 
g2 = ‘global’; // グローバル変数 
}; 
checkscope();
同じ名前があった場合はローカルを優先 
var scope = ‘global’; 
var checkscope = function() { 
var scope = ‘local’; 
return scope; 
}; 
checkscope(); // local
JavaScript にはブロックスコープがない 
var test = function() { 
for (var k = 0; k < 10; k++) { 
console.log(k); // 0 から 9 が出力される 
} 
console.log(k); // 10 が出力される 
} 
test();
JavaScript にはブロックスコープがない 
function test(obj) { 
if (typeof obj === ‘object’) { 
var j = 0; 
} 
console.log(j); // 0 or undefined が出力される 
}
問題 
var scope = ‘global’; 
var f = function() { 
console.log(scope); // (1) 
var scope = ‘local’; 
console.log(scope); // (2) 
} 
f(); 
● (1) で出力されるのは? 
a. global 
b. local 
c. 上記以外 
● (2) で出力されるのは? 
a. global 
b. local 
c. 上記以外
問題 (答え) 
var scope = ‘global’; 
var f = function() { 
console.log(scope); // (1) 
var scope = ‘local’; 
console.log(scope); // (2) 
} 
f(); 
● (1) で出力されるのは? 
a. global 
b. local 
c. 上記以外 
● (2) で出力されるのは? 
a. global 
b. local 
c. 上記以外
巻き上げ 
var scope = ‘global’; 
var f = function() { 
console.log(scope); // undefined 
var scope = ‘local’; 
console.log(scope); // local 
} 
f(); 
var scope = ‘global’; 
var f = function() { 
var scope; 
console.log(scope); // undefined 
scope = ‘local’; 
console.log(scope); // local 
} 
f(); 
=
アジェンダ 
1. 変数 
2. +演算子 
3. 関数定義式と関数宣言文
「+」演算子は2つの可能性がある 
● 加算 
● 文字列の連結
「加算」 or 「文字列の連結」の判定方法 
1. オペランドのどちらかがオブジェクトの場合、以下の方法で 
基本型値に変換する 
○ Dateオブジェクトの場合は、toString()で変換 
○ それ以外は、valueOf()で変換を試みて、基本型値を返さなかった場合には 
toString()で変換 
2. オペランドの一方が文字列の場合、もう一方のオペランドを 
文字列に変換し、連結処理をする 
3. それ以外の場合は、両方のオペランドを数値にして加算処 
理をする
例 
1 + 2 // 3 
'1' + '2' // '12' 
'1' + 2 // '12' 
1 + {} // '1[object Object]' 
true + true // 2 
2 + null // 2 
2 + undefined // NaN
アジェンダ 
1. 変数 
2. +演算子 
3. 関数の定義
関数の定義方法は3つある 
var f = function(x) { 
return x * x; 
}; 
console.log(f(2)); // 4 
function square(x) { 
return x * x; 
} 
console.log(square(2)); // 4 
関数定義式 
(無名) 
関数宣言文 
関数定義式 
(名前付き) 
var f = function square(x) { 
return x * x; 
}; 
console.log(f(2)); // 4 
console.log(square(2)); // エラー
3 つの差異がある 
● スタックトレース 
● if や while の中での定義 
● 巻き上げ
スタックトレース(1 / 2) 
var f = function() { 
throw new Error(); 
}; 
f(); 
function test() { 
throw new Error(); 
} 
test(); 
関数定義式 
(無名) 
関数宣言文 
関数定義式 
(名前付き) 
var f = function test() { 
throw new Error(); 
}; 
f();
スタックトレース(2 / 2) 
Error 
at f (/Users/teloo/test.js:2:9) 
at Object.<anonymous> (/Users/teloo/test.js:5:1) 
at Module._compile (module.js:456:26) 
... 
Error 
at test (/Users/teloo/test.js:2:9) 
at Object.<anonymous> (/Users/teloo/test.js:5:1) 
at Module._compile (module.js:456:26) 
...
if や while の中での定義 
if (true) { 
var f = function(x) { 
return x * x; 
}; 
console.log(f(2)); // 4 
} 
if (true) { 
function square(x) { 
return x * x; 
} 
console.log(square(2)); // 4 
} 
// IE11, Firefox, Chrome, Node.js 
で確認したところ動作した 
// 仕様的にはしてはいけないらしい 
関数定義式 
(無名) 
関数宣言文 
関数定義式 
(名前付き) 
if (true) { 
var f = function square(x) { 
return x * x; 
}; 
console.log(f(2)); // 4 
}
巻き上げ (1 / 2) 
// TypeError: undefined is not 
a function 
console.log(f(2)); 
var f = function(x) { 
return x * x; 
}; 
console.log(square(2)); // 4 
function square(x) { 
return x * x; 
} 
関数定義式 
(無名) 
関数宣言文 
関数定義式 
(名前付き) 
// TypeError: undefined is not a 
function 
console.log(f(2)); 
var f = function square(x) { 
return x * x; 
};
巻き上げ (2 / 2) 
var f; 
// TypeError: undefined is not 
a function 
console.log(f(2)); 
f = function(x) { 
return x * x; 
}; 
function square(x) { 
return x * x; 
} 
console.log(square(2)); // 4 
関数定義式 
(無名) 
関数宣言文 
関数定義式 
(名前付き) 
var f; 
// TypeError: undefined is not a 
function 
console.log(f(2)); 
f = function square(x) { 
return x * x; 
};
お わ り
宿題 (1 / 4) 
引数またはオプションに入力された文字列を、なんらかの形で 
ファイルに書き込んでいくコマンドを作成せよ。 
● 1行ずつファイルに書き込む形式でもいいし、CSV 形式でも 
いい 
● 各成果物によって仕様が異なるので、README を添付する 
こと
宿題 (2 / 4) 
例 
> addtext hoge -f C:/Users/teloo/data.txt 
> addtext --file C:/Users/teloo/data.txt piyo あああ 
> 
data.txt 
hoge 
piyo 
あああ
宿題 (3 / 4) 
● 目的 
○ Node.js でのファイル操作のやり方を学ぶ 
○ Node.js での外部ライブラリの使用方法を学ぶ
宿題 (4 / 4) 
● Node.js v0.10.26 Manual & Documentation 
○ Node.js の公式のAPIドキュメント 
● commander 
○ コマンドラインのプログラムを簡単に作成するためのライ 
ブラリ 
● 宿題置き場にサンプルプログラムを置きました

More Related Content

What's hot

X hago2 shortcoding 20110827
X hago2 shortcoding 20110827X hago2 shortcoding 20110827
X hago2 shortcoding 20110827uskey512
 
20120422i phonedeveloperworkshoppublished
20120422i phonedeveloperworkshoppublished20120422i phonedeveloperworkshoppublished
20120422i phonedeveloperworkshoppublishedYoichiro Sakurai
 
20130215 fluentd esper_2
20130215 fluentd esper_220130215 fluentd esper_2
20130215 fluentd esper_2Ogibayashi
 
GC in C++0x
GC in C++0xGC in C++0x
GC in C++0xyak1ex
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4Kenta Hattori
 
C++ lecture-1
C++ lecture-1C++ lecture-1
C++ lecture-1sunaemon
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたKazuyuki TAKASE
 
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12Keisuke Fukuda
 
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...Masahiro Sakai
 
Javaセキュアコーディングセミナー東京第1回 演習
Javaセキュアコーディングセミナー東京第1回 演習Javaセキュアコーディングセミナー東京第1回 演習
Javaセキュアコーディングセミナー東京第1回 演習JPCERT Coordination Center
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論MITSUNARI Shigeo
 
JavaScript関数のあれこれ
JavaScript関数のあれこれJavaScript関数のあれこれ
JavaScript関数のあれこれiPride Co., Ltd.
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 

What's hot (20)

X hago2 shortcoding 20110827
X hago2 shortcoding 20110827X hago2 shortcoding 20110827
X hago2 shortcoding 20110827
 
20120422i phonedeveloperworkshoppublished
20120422i phonedeveloperworkshoppublished20120422i phonedeveloperworkshoppublished
20120422i phonedeveloperworkshoppublished
 
20130215 fluentd esper_2
20130215 fluentd esper_220130215 fluentd esper_2
20130215 fluentd esper_2
 
JavaScript入門
JavaScript入門JavaScript入門
JavaScript入門
 
前期講座09
前期講座09前期講座09
前期講座09
 
GC in C++0x
GC in C++0xGC in C++0x
GC in C++0x
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4
 
C++ lecture-1
C++ lecture-1C++ lecture-1
C++ lecture-1
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
 
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
 
Javaセキュアコーディングセミナー東京第1回 演習
Javaセキュアコーディングセミナー東京第1回 演習Javaセキュアコーディングセミナー東京第1回 演習
Javaセキュアコーディングセミナー東京第1回 演習
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論
 
C++11
C++11C++11
C++11
 
JavaScript関数のあれこれ
JavaScript関数のあれこれJavaScript関数のあれこれ
JavaScript関数のあれこれ
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 

Viewers also liked

Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Appresso Engineering Team
 
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Executionマルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded ExecutionAppresso Engineering Team
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShellAmazon Web Services Japan
 

Viewers also liked (16)

Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
 
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
 
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
 
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
 
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
 
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
 
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
 
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
 
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
 
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
 
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
 
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
 
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
 
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Executionマルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
 
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
 

Similar to JavaScript 勉強会 ― 変数・演算子・文

JS 6th edition reading circle part 3
JS 6th edition reading circle part 3JS 6th edition reading circle part 3
JS 6th edition reading circle part 3Teloo
 
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】株式会社ランチェスター
 
Miyazaki.js vol.1 スコープの話
Miyazaki.js vol.1 スコープの話Miyazaki.js vol.1 スコープの話
Miyazaki.js vol.1 スコープの話Nobuhiro Nakashima
 
ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】株式会社ランチェスター
 
Flow.js
Flow.jsFlow.js
Flow.jsuupaa
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそDavid Buck
 
サイ本読書会4章変数
サイ本読書会4章変数サイ本読書会4章変数
サイ本読書会4章変数ztyper
 
Boundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMBoundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMFumiya Nozaki
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Nextdynamis
 
po-3. 式の抽象化と関数
po-3. 式の抽象化と関数po-3. 式の抽象化と関数
po-3. 式の抽象化と関数kunihikokaneko1
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsTomohiro Kumagai
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会大樹 小倉
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーmganeko
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門masatora atarashi
 
関数型プログラミング in javascript
関数型プログラミング in javascript関数型プログラミング in javascript
関数型プログラミング in javascriptRyuma Tsukano
 

Similar to JavaScript 勉強会 ― 変数・演算子・文 (20)

JS 6th edition reading circle part 3
JS 6th edition reading circle part 3JS 6th edition reading circle part 3
JS 6th edition reading circle part 3
 
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
 
Miyazaki.js vol.1 スコープの話
Miyazaki.js vol.1 スコープの話Miyazaki.js vol.1 スコープの話
Miyazaki.js vol.1 スコープの話
 
ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】
 
Flow.js
Flow.jsFlow.js
Flow.js
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
サイ本読書会4章変数
サイ本読書会4章変数サイ本読書会4章変数
サイ本読書会4章変数
 
PHP 入門
PHP 入門PHP 入門
PHP 入門
 
Boundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMBoundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAM
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
 
po-3. 式の抽象化と関数
po-3. 式の抽象化と関数po-3. 式の抽象化と関数
po-3. 式の抽象化と関数
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdots
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会
 
08
0808
08
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
 
あらためてPHP5.3
あらためてPHP5.3あらためてPHP5.3
あらためてPHP5.3
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
関数型プログラミング in javascript
関数型プログラミング in javascript関数型プログラミング in javascript
関数型プログラミング in javascript
 
Project lambda
Project lambdaProject lambda
Project lambda
 

More from Appresso Engineering Team

Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42Appresso Engineering Team
 
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40Appresso Engineering Team
 
Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37Appresso Engineering Team
 
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Appresso Engineering Team
 
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Appresso Engineering Team
 
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29Appresso Engineering Team
 
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25Appresso Engineering Team
 
Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22Appresso Engineering Team
 
Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17Appresso Engineering Team
 
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12Appresso Engineering Team
 
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Appresso Engineering Team
 
Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7Appresso Engineering Team
 
Effective java 輪読会 第2章 項目1,2,3,4
Effective java 輪読会 第2章 項目1,2,3,4Effective java 輪読会 第2章 項目1,2,3,4
Effective java 輪読会 第2章 項目1,2,3,4Appresso Engineering Team
 

More from Appresso Engineering Team (15)

Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
 
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
 
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
 
Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37Effective Java 輪読会 第6章 項目35-37
Effective Java 輪読会 第6章 項目35-37
 
Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34Effective java 輪読会 第6章 項目32-34
Effective java 輪読会 第6章 項目32-34
 
Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31Effective java 輪読会 第6章 項目30-31
Effective java 輪読会 第6章 項目30-31
 
Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29Effective java 輪読会 第5章 項目26-29
Effective java 輪読会 第5章 項目26-29
 
Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25Effective java 輪読会 第5章 項目23-25
Effective java 輪読会 第5章 項目23-25
 
Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22Effective java 輪読会 第4章 項目18-22
Effective java 輪読会 第4章 項目18-22
 
Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17Effective Java 輪読会 第4章 項目13-17
Effective Java 輪読会 第4章 項目13-17
 
Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12Effective java 輪読会 第3章 項目11, 12
Effective java 輪読会 第3章 項目11, 12
 
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10
 
Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7Effective java 輪読会 第2章 項目5,6,7
Effective java 輪読会 第2章 項目5,6,7
 
Effective java 輪読会 第2章 項目1,2,3,4
Effective java 輪読会 第2章 項目1,2,3,4Effective java 輪読会 第2章 項目1,2,3,4
Effective java 輪読会 第2章 項目1,2,3,4
 

Recently uploaded

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

JavaScript 勉強会 ― 変数・演算子・文

  • 2. アジェンダ 1. 変数 2. +演算子 3. 関数定義式と関数宣言文
  • 3. アジェンダ 1. 変数 2. +演算子 3. 関数定義式と関数宣言文
  • 4. 変数の宣言 var x; var i, sum; var message = ‘hello’; var a = 0, b = 0, c = 0;
  • 5. グローバル変数とローカル変数 ● グローバル変数 ○ 変数の有効範囲はプログラム全体 ● ローカル変数 ○ 変数の有効範囲は変数が宣言された関数の中に限定
  • 6. グローバル変数とローカル変数 var g1 = ‘global’; // グローバル変数 var checkscope = function() { var local = ‘local’; // ローカル変数 g2 = ‘global’; // グローバル変数 }; checkscope();
  • 7. 同じ名前があった場合はローカルを優先 var scope = ‘global’; var checkscope = function() { var scope = ‘local’; return scope; }; checkscope(); // local
  • 8. JavaScript にはブロックスコープがない var test = function() { for (var k = 0; k < 10; k++) { console.log(k); // 0 から 9 が出力される } console.log(k); // 10 が出力される } test();
  • 9. JavaScript にはブロックスコープがない function test(obj) { if (typeof obj === ‘object’) { var j = 0; } console.log(j); // 0 or undefined が出力される }
  • 10. 問題 var scope = ‘global’; var f = function() { console.log(scope); // (1) var scope = ‘local’; console.log(scope); // (2) } f(); ● (1) で出力されるのは? a. global b. local c. 上記以外 ● (2) で出力されるのは? a. global b. local c. 上記以外
  • 11. 問題 (答え) var scope = ‘global’; var f = function() { console.log(scope); // (1) var scope = ‘local’; console.log(scope); // (2) } f(); ● (1) で出力されるのは? a. global b. local c. 上記以外 ● (2) で出力されるのは? a. global b. local c. 上記以外
  • 12. 巻き上げ var scope = ‘global’; var f = function() { console.log(scope); // undefined var scope = ‘local’; console.log(scope); // local } f(); var scope = ‘global’; var f = function() { var scope; console.log(scope); // undefined scope = ‘local’; console.log(scope); // local } f(); =
  • 13. アジェンダ 1. 変数 2. +演算子 3. 関数定義式と関数宣言文
  • 15. 「加算」 or 「文字列の連結」の判定方法 1. オペランドのどちらかがオブジェクトの場合、以下の方法で 基本型値に変換する ○ Dateオブジェクトの場合は、toString()で変換 ○ それ以外は、valueOf()で変換を試みて、基本型値を返さなかった場合には toString()で変換 2. オペランドの一方が文字列の場合、もう一方のオペランドを 文字列に変換し、連結処理をする 3. それ以外の場合は、両方のオペランドを数値にして加算処 理をする
  • 16. 例 1 + 2 // 3 '1' + '2' // '12' '1' + 2 // '12' 1 + {} // '1[object Object]' true + true // 2 2 + null // 2 2 + undefined // NaN
  • 17. アジェンダ 1. 変数 2. +演算子 3. 関数の定義
  • 18. 関数の定義方法は3つある var f = function(x) { return x * x; }; console.log(f(2)); // 4 function square(x) { return x * x; } console.log(square(2)); // 4 関数定義式 (無名) 関数宣言文 関数定義式 (名前付き) var f = function square(x) { return x * x; }; console.log(f(2)); // 4 console.log(square(2)); // エラー
  • 19. 3 つの差異がある ● スタックトレース ● if や while の中での定義 ● 巻き上げ
  • 20. スタックトレース(1 / 2) var f = function() { throw new Error(); }; f(); function test() { throw new Error(); } test(); 関数定義式 (無名) 関数宣言文 関数定義式 (名前付き) var f = function test() { throw new Error(); }; f();
  • 21. スタックトレース(2 / 2) Error at f (/Users/teloo/test.js:2:9) at Object.<anonymous> (/Users/teloo/test.js:5:1) at Module._compile (module.js:456:26) ... Error at test (/Users/teloo/test.js:2:9) at Object.<anonymous> (/Users/teloo/test.js:5:1) at Module._compile (module.js:456:26) ...
  • 22. if や while の中での定義 if (true) { var f = function(x) { return x * x; }; console.log(f(2)); // 4 } if (true) { function square(x) { return x * x; } console.log(square(2)); // 4 } // IE11, Firefox, Chrome, Node.js で確認したところ動作した // 仕様的にはしてはいけないらしい 関数定義式 (無名) 関数宣言文 関数定義式 (名前付き) if (true) { var f = function square(x) { return x * x; }; console.log(f(2)); // 4 }
  • 23. 巻き上げ (1 / 2) // TypeError: undefined is not a function console.log(f(2)); var f = function(x) { return x * x; }; console.log(square(2)); // 4 function square(x) { return x * x; } 関数定義式 (無名) 関数宣言文 関数定義式 (名前付き) // TypeError: undefined is not a function console.log(f(2)); var f = function square(x) { return x * x; };
  • 24. 巻き上げ (2 / 2) var f; // TypeError: undefined is not a function console.log(f(2)); f = function(x) { return x * x; }; function square(x) { return x * x; } console.log(square(2)); // 4 関数定義式 (無名) 関数宣言文 関数定義式 (名前付き) var f; // TypeError: undefined is not a function console.log(f(2)); f = function square(x) { return x * x; };
  • 26. 宿題 (1 / 4) 引数またはオプションに入力された文字列を、なんらかの形で ファイルに書き込んでいくコマンドを作成せよ。 ● 1行ずつファイルに書き込む形式でもいいし、CSV 形式でも いい ● 各成果物によって仕様が異なるので、README を添付する こと
  • 27. 宿題 (2 / 4) 例 > addtext hoge -f C:/Users/teloo/data.txt > addtext --file C:/Users/teloo/data.txt piyo あああ > data.txt hoge piyo あああ
  • 28. 宿題 (3 / 4) ● 目的 ○ Node.js でのファイル操作のやり方を学ぶ ○ Node.js での外部ライブラリの使用方法を学ぶ
  • 29. 宿題 (4 / 4) ● Node.js v0.10.26 Manual & Documentation ○ Node.js の公式のAPIドキュメント ● commander ○ コマンドラインのプログラムを簡単に作成するためのライ ブラリ ● 宿題置き場にサンプルプログラムを置きました