SlideShare a Scribd company logo
変数・演算子・文 
開発部 
てるー
アジェンダ 
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 20110827
uskey512
 
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++0x
yak1ex
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4
Kenta 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 12
Keisuke 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
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
 
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 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
Appresso Engineering Team
 
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
Appresso Engineering Team
 
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 Execution
Appresso 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 PowerShell
Amazon 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.js
uupaa
 
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 OpenFOAM
Fumiya Nozaki
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
dynamis
 
po-3. 式の抽象化と関数
po-3. 式の抽象化と関数po-3. 式の抽象化と関数
po-3. 式の抽象化と関数
kunihikokaneko1
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdots
Tomohiro 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基礎勉強会
大樹 小倉
 
08
0808
08
Hash29
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
mganeko
 
あらためてPHP5.3
あらためてPHP5.3あらためてPHP5.3
あらためてPHP5.3
Masashi Shinbara
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
masatora atarashi
 
関数型プログラミング in javascript
関数型プログラミング in javascript関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
 
Project lambda
Project lambdaProject lambda

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, 12
Appresso Engineering Team
 
Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10Effective java 輪読会 第3章 項目8,9,10
Effective java 輪読会 第3章 項目8,9,10
Appresso 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

JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 

Recently uploaded (8)

JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 

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 ○ コマンドラインのプログラムを簡単に作成するためのライ ブラリ ● 宿題置き場にサンプルプログラムを置きました