JS 文法の意味が言語化できない
- 評価
- クリップ 0
- VIEW 482
JavaScript初心者の者です。
https://www.youtube.com/watch?v=weZFfrjF-k4
こちらのチュートリアルでJavaScriptを学んでいました。
以下のコードのSetInterval内の意味が理解できなくて上手く言語化できません。
具体的には、
getHours()*30の*30の意味、
getMinutes()*deg,getSeconds()*degの*degの意味、
transform内の文法の意味
これらの意味をご教授いただくと幸いです。
よろしくお願いします。
'use strict';
{
//degという変数で6を保持
const deg = 6;
//#hr,#mn,#scをHTMLから変数hr,mn,scで取得
const hr = document.querySelector('#hr')
const mn = document.querySelector('#mn')
const sc = document.querySelector('#sc')
setInterval(()=>{
//dayという変数で現在日時を取得できるnew.Date()を保持
let day = new Date();
//hhという変数で時間を取得
let hh = day.getHours()*30;
//mmという変数で分を取得
let mm = day.getMinutes()*deg;
//ssという変数で秒を取得
let ss = day.getSeconds()*deg;
hr.style.transform = `rotateZ(${(hh)+(mm/12)}deg)`;
mn.style.transform = `rotateZ(${mm}deg)`;
sc.style.transform = `rotateZ(${ss}deg)`;
});
}
追記:transform内の文法の意味、ですが、具体的には、
ratateZの意味と、その中のdegの意味です。
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+8
以下のコードのSetIntervalの意味が理解できなくて上手く言語化できません。
いずれも、プログラミング的な意味ではなくやりたいことの理解が必要な場面です。
getHours()*30の*30の意味
アナログ時計の時針は12時間で1周しますので、1時間あたり30度です。
getMinutes()*deg,getSeconds()*degの*degの意味、
分針・秒針は60(分/秒)で1週ですので、1(分/秒)あたり6度です。
transform内の文法の意味
いくつか疑問点が考えられますが、もう少し詳しく疑問点を挙げていただけませんでしょうか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+4
何をするものかはわからないけど、12 に 30 をかけると 360 になります。
また 60 に 6 をかけると 360 になります。
deg は degree つまり度の意味だと思います。
要するに、針の 1 つ動く度数を表しています。
長針と秒針は 1 つ動くと 6 度、短針は 1 時間分動くと 30 度になります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+2
ratateZの意味と、その中のdegの意味です。
これは、Z軸回転を、単位deg
(よく使う、360度の単位)で回転を加える、ということです。
回転の単位に関しては、
を参照してください。
それを理解すれば、自ずと、
なぜ、この数値をかけているのか?という上行の構文の意味も理解できるかと。
以下元回答
getHours()*30の*30の意味
ここに関しては、maisumakunさんの回答をご覧ください。
文法の意味がわからない、というのであれば、
getHours
メソッドで返された数値に、30
を掛け算しています。
他行も、*
を使っている箇所は全て同様です。
transform内の文法の意味
テンプレートリテラルという記述方法です。
簡素な記述で、文字列を定義できます。
変数を使った文字列の定義に、特に有効な記法です。
通常の文字列処理だと下記になります。
hr.style.transform = "rotateZ(" + (hh + (mm/12)) + "deg)";
mn.style.transform = "rotateZ(" + mm + "deg)";
sc.style.transform = "rotateZ(" + ss + "deg)";
これを見れば、テンプレートリテラルが、変数を使う文字列の定義の時、特に記述しやすいことがわかるかと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
miyabi_takatsuk
2020/08/07 09:38
* が、乗算を行う演算子ということはご存知ですか?
m.ts10806
2020/08/07 10:00
わざわざ言語化(正しくは「文章化」でしょうか)しなくても「書いた通り動く」だけで良くないですか?
miyabi_takatsuk
2020/08/07 10:09
誰か後輩さんとかに構文の説明できるようにしたいんですかね。
(だったら、まず何をやろうとしているかを理解しないと説明しようが・・・)