[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/24 16:40 / Filesize : 290 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

+ JavaScript の質問用スレッド vol.118 +



1 名前:デフォルトの名無しさん [2015/04/22(水) 01:35:08.20 ID:TQI/XWNo.net]
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

655 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 02:08:51.62 ID:Mz7z2xmL.net]
>>645
レスありがとうございます
pushstateについては納得いきました
つまりangularjsのrouteproviderにある/test/:paramみたいな機能はしっかりページを用意しておかないといけない(用意できるようなリンクにしておく)ということですね

656 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 06:03:00.04 ID:ygI9wqh7.net]
switch(x){...}文でx=0、1、2、3として3の時だけそのswitch文を再実行したいんです。goto文が有れば解決するんですがどうすれば出来ますか?

657 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 06:15:25.75 ID:f7tvsCeN.net]
そこんとこだけ再帰関数化すればいんじゃね?

658 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 07:29:17.18 ID:ygI9wqh7.net]
>>648
サンプルお願いします

659 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 07:31:14.22 ID:xbGDVZvD.net]
>>649
まずお前が提示しろ

660 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 07:38:18.32 ID:f7tvsCeN.net]
やろうとしてる処理がわからんとなんともだよな

再びswitchかけたいんならswitch対象自体を操作するんだろうから適当に書くとこんなかんじか?
function recursiveSwitch( param ){
 switch( param ){
  case 0:
   param=someFunctionZero(param);
   break;
  case 1:
   param=someFunctionOne(param);
   break;
  case 2:
   param=someFunctionTwo(param);
   break;
  case 3:
   param=someFunctionThree(param);
   param=recursiveSwitch(param);
   break;
 }
 return param;
}
var target=3;
target=recursiveSwitch(target);
テストはしてない。function someFunctionThree() が3を返し続けないようにしないと無限ループ

661 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 09:05:30.89 ID:0jKR4dX9.net]
ループの中にswitch文書けばいいだけじゃねえのか?

662 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 10:21:41.17 ID:ygI9wqh7.net]
>>651
サンプルありがとうございました。その方法でやってみます。ところでググッていたら、
qiita.com/LightSpeedC/items/32c1d1d3c466b04b59d1
で以下の方法を見つけたのですが、
target: for (;;) switch (target) { の部分の意味が分かりません。何ですかこれは?
---------
JavaScript言語によるgoto文の様に書いてみた例
var target;

target: for (;;) switch (target) {

 case undefined:
  console.log('init');

 case 'start':
  console.log('start');

  // goto next;
  target = 'next';
  continue target;

 case 'skip':
  console.log('skip');

 case 'next':
  console.log('next');

 default:
  break target;
}

console.log('exit');

663 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 12:28:06.93 ID:0jKR4dX9.net]
>>653
この例はループの中にswitch文書いてるだけだよ。
つかgoto文の存在など、早く忘れた方がいい。



664 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 12:28:53.90 ID:0jKR4dX9.net]
>>653
この例はループの中にswitch文書いてるだけだよ。
つかgoto文の存在など、早く忘れた方がいい。

665 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 12:30:16.45 ID:0jKR4dX9.net]
あれ?連投すまんw

666 名前:デフォルトの名無しさん [2016/01/26(火) 13:58:50.07 ID:AKyFytji.net]
konashiでURM37という距離センサーを使いたいのですが、www.dfrobot.com/wiki/index.php/URM37_V3.2_Ultrasonic_Sensor_(SKU:SEN0001)#IntroductionのサイトのMode 3: PWM passive control mode
をkonashiで動作させたいです!プログラムコードを教えてください!

667 名前:デフォルトの名無しさん [2016/01/26(火) 14:00:14.48 ID:AKyFytji.net]
konashiでURM37という距離センサーを使いたいのですが、www.dfrobot.com/wiki/index.php/URM37_V3.2_Ultrasonic_Sensor_(SKU:SEN0001)#IntroductionのサイトのMode 3: PWM passive control mode
をkonashiで動作させたいです!プログラムコードを教えてください!

668 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 14:11:42.77 ID:ygI9wqh7.net]
>>655
忘れられない

669 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 18:03:01.79 ID:0jKR4dX9.net]
>>659
無い方がいいから淘汰されてきたんだ。奴の事は諦めろ。

670 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 18:17:49.94 ID:f7tvsCeN.net]
5.3でgotoが追加実装されたphpという言語もある
少なくとも使い方を間違えなければ有用だとは思うが…

>>653はラベルと持ちまわすフラグ役の変数とforに付着させてるラベルに
同じ名前使ってるから混乱するけど、条件なしforでbreak target;するまでfor内まわしてるだけ、for(;;)はwhile(true)と似たようなもん
「3のときだけ再実行」ではなく「3以外は再実行しないでループを抜ける」って書き方で、だいたい同等の効果を得るのが>>653

671 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 21:32:11.47 ID:REfyk5nJ.net]
goto文はJSでもES6で再帰などのために追加しようという声が挙がり比較的好評だったが、
非常に残念ながらES5のとき予約語から外してしまったため流れた。

672 名前:デフォルトの名無しさん mailto:sage [2016/01/26(火) 23:49:49.18 ID:Ej3tVqof.net]
Linuxではgotoは、関数の最後に、
エラー処理をまとめる際に使う

MISRA-C では、ループ中に、
continueを使う・breakが2箇所以上にあるのも禁止

関数の出口(return)が2つあるのも禁止

特に、制御フローを変える命令は、厳重にチェックする

673 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 01:41:22.45 ID:00eXLu2i.net]
>>663
まあそのルールは俺は逆にただの足かせだとは思うが。

> そう、こういうのはだいたい昔の親切でない言語や開発環境を想定した規約なんだよね。
> 実際10年ぐらい前には、巨大メソッドの途中にreturn文があって以降が実は使われないゴミ、
> とかいう酷いプログラムを見かけたこともある。
> なので、そういう時代は出口を一か所にしなさいという主張にも、
> その結果として巨大なif文やらが作られてしまうことが多々あるものの、それでも一定の価値があった。
> でも今はJavaなんかだとそもそもそういうのは言語自体でエラーとして検知してくれるし、
> 何より一つ一つのメソッドを小さく作るべき、って思想も浸透してきてる(と思う)ので、
> この規約は可読性を下げるだけの厄介者でしかない。(#2295561)
> askslashdot.srad.jp/comments.pl?sid=588292&cid=2295472

> ただ、このスタイルはいい線いっているけど銀の弾丸ではない訳で、
> 厳格に適用してみるとフラグが必要になってゴチャゴチャする等の問題が発生したりする。
> これを避けようとすると、特定の場面においてbreakやcontinueや途中returnを使わざるをえなくなる。
> C言語では特定の場面でgotoも使うことにもなる。
> 現在のC言語系のプログラミング言語にbreakやcontinueや関数内限定のgotoが残っていたり、
> 途中でreturn可能な言語仕様だったりする理由は、
> 「乱用したらNGだけど、でも代替のよい案がない」からだ。つまり微妙に必要悪的なポジションの機能なのだ。
> d.hatena.ne.jp/eel3/20121225/1356443485

ここら辺が割と妥当な意見ではないかな。
ただ再帰も満足に書けない奴がgoto使うのは無しだよ。
基本的には「もっとも分かりやすい記述」にしろということであって、
つまり、自分がやりたい処理を何通りにでも書ける奴が
自分や自分以外の一般プログラマにとって一番簡単な記述を選ぶときのガイドラインであって、
一通りすらも満足に書けない奴がgotoとかやったらおそらく満場一致で死ねということになる。



674 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 02:33:42.30 ID:TJ8X6UiD.net]
最も分かりやすい記述だなんて
最もJavaScriptにおいて混沌として定義できないことだろう
それにスクリプト言語であるんだし、他人も見るようなソースを書くばかりではないしね

675 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 08:58:11.55 ID:Fk4hNRa0.net]
gotoって、でかい関数を書いた場合に、使い回したい部分に飛ぶための命令だろ?
今時は、使い回したい部分があるなら最初から関数化しとけで終わりだから、不要だよな。

676 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 14:11:16.05 ID:LCHBmKl2.net]
JavaScriptのソースファイル source.js で
文中にif文でこんなふうに関数を囲っても問題ないですか?
------- source.js --------
function func() {
  // 新しい関数
}

if (false) {
  function func() {
    // 古い関数
  }
}
------ここまで--------
つまり、funcを改良したのですが、古いのは参考にするために消さずに残して
おきたいので取りあえず無効化しておいて、新しいのを使いたいと言う場合。

677 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 14:22:26.15 ID:Uz3IqtRq.net]
古い関数を残したいなら単にコメントアウトすればいいんじゃね
あとブロックの中で関数宣言はダメよ

678 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 14:38:15.86 ID:LCHBmKl2.net]
>>668
>単にコメントアウトすれば
コメントの入れ子 /* /**/ */ などにするとエラーするのですが。

>あとブロックの中で関数宣言はダメよ
文法的に違反ですか?

679 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 15:26:45.24 ID:Gnlbm7oj.net]
>>669
atomとか最近のエディタ使いなよ
ctrl / で選択範囲全部コメント、もう一回で復帰

680 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 17:55:33.38 ID:3mhfO42b.net]
>>668
ブロックの中で関数宣言はとっくに緩和された。

681 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 18:06:02.36 ID:Fk4hNRa0.net]
>>669
全部の行を//でコメントアウトするんよ
>>670のいうとおり、エディタによっては簡単にできる。

682 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:08:26.85 ID:4Pko3+8x.net]
iframeによる、designMode で範囲選択についてお知恵をお貸し下さい

現在、通常の文字などであれば、問題なく取得・置換等はできるのですが、
デザインモードで、<img src="xxxxxxx"> 等の画像があった時、表示されている画像を選択して同じように取得しようとすると
空の値が返ってきます。

edit = document.getElementsByClassName( editName )[0].contentDocument;
var selObj = item.getSelection();

selObj.toString() 等では取れませんでした。
調べてもわからず…

どうぞよろしくお願いいたします…

683 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:11:18.02 ID:4Pko3+8x.net]
関数から部分的に貼り付けたのでおかしいですね
実際の実行はこんな感じです

edit = document.getElementsByClassName("edit")[0].contentDocument;
selObj = edit.getSelection();

すみません、よろしくお願い致します。



684 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 21:51:50.78 ID:LCHBmKl2.net]
>>670
atom使ってみます。
>>671
>ブロックの中で関数宣言はとっくに緩和された。
では、
if (false) {
  function func() {
   ...
  }
}
こういう記述は文法的に問題ないですか?

685 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 22:14:23.92 ID:BdMiQKBu.net]
ない
仕様見ろ

686 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:10:36.84 ID:92fi2xE/.net]
>>675
書けるからといって書いていいわけじゃない。
そんな消し方をしたら、大抵の人間はキレる。

まあ、一人でプログラム作ってるうちは、どんな無法も通せるから別にいいだろうけど。

687 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:34:39.52 ID:e8RmjLYi.net]
コメントでその旨を省略せずしっかり細かく書いてあれば許せる派
コメントないと、なんでif(false)で退避してんのかどこの関数なんか全然わからん
常にsvnやgitを使えるわけじゃないし

>>673
文字列に挟まれた画像を画像ごと選択コピペすると画像のところは空文字列か空白類になるように、
ありゃ基本はあくまでテキスト選択。だから

688 名前:素直にDOM構造見て
window.getSelection().getRangeAt(0).startContainerなりinnerHTMLなりfirstElementChildあたりでなんとかするしかないのでは
[]
[ここ壊れてます]

689 名前:デフォルトの名無しさん [2016/01/27(水) 23:51:21.41 ID:1bMWaH5A.net]
コメントにしておけば、サーバーにアップロードする際、
ツールで取り除けるけど、

そういう実行可能なコードにすると、簡単には取り除けない。
また実行時にコンパイルされるかも知れないし、時間のムダ

コンパイラが賢ければ、その部分は絶対に実行されないから、
取り除くかも知れないが、ブラウザではあまりきつい最適化はしないよ

また変数・関数の宣言などにも、影響を与えるし、
バグを生むから、コメントにすべき

690 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 11:32:01.91 ID:0VC4IiZB.net]
>>678
ありがとう御座います!

ただの <img src="xxxxx"> での画像では、まったくもって値が取れないのですが、

<div><img src="xxxxx"></div> で囲んであげると、startContainer にimgタグがそのまま入りました!
これを innerHTML で取り出し置き換え処理等できました。

本当にありがとう御座います、助かりました…

691 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 15:21:12.54 ID:k59Uf2Tm.net]
>>677,678
ソースを読む上で重要なのは、どうしてそんな書き方がしてあるのかではなく、
それがどういう挙動をするかだ。
その点if(false)は読み飛ばせばいいだけだし、仮にどうしてかが気になっても
最低でも内に複数行コメントが用いられてるのを見れば誰にとっても自明である。

こんなことに一々コメントを書いていたらコメントの方が多くなってしまう。

692 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 19:11:29.65 ID:X+Kzth4y.net]
デッドコードの採用を勧めてるやつの気がしれん

693 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 19:15:57.36 ID:vPLu6NB1.net]
>>675
その前に if 文が全く有効に働いてない点を何とかしろ

alert(func); // function func () { }
if (false) {
function func () { }
}



694 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 19:32:32.95 ID:63oiELTt.net]
>>681
えっ?if(false)が許せるの?

695 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 22:48:41.45 ID:Ho2+Qj5E.net]
>>683
それはsloppyモード限定の例外動作だ。
strictモードなら起きないし。

>>684
場合による
直ちに許せないとは言わないということだ

696 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 01:45:59.32 ID:i7byzhy6.net]
直ちに許せないとは言わないなんて言わないよ絶対

697 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 01:50:43.91 ID:NW56arbt.net]
使わないコードはコメントアウトする方がはるかに自明だと思うがな
「こんなことに一々コメントを書いていたら」というが、コメントアウトが多くなるのはデッドコードを量産するコーダーの問題
>>681の言葉を借りるならコメントアウトしなければ「デッドコードの方が多くなってしまう」だけだが、そんなことになるならコードの書き方が元からおかしい

698 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 02:00:25.76 ID:PQfy+X+f.net]
>687
話が噛み合ってないよ
コメントアウトの手法の1つとしてif(false)を許容するかどうかで揉めてるんだよ

699 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 07:26:50.53 ID:F3zdOsh5.net]
>>688
>>681の最後の一行を理解しかねるのだが
まさか、行頭に "//" が来る行数が多くなる事を懸念しているのか?
実際、コメントが多いのなら多いと自明である方がいいと思うが

700 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 08:03:17.97 ID:jWh3F8zy.net]
1  質問者は、参考のために残す目的で、if(false){} で古い関数をくくろうと考えた
    理由は/* */範囲コメントが既にある場合に/* */を入れ子にするとエラーになるため
2  元の質問 if(false){ function func(){} } が文法面で問題があるかどうかについては基本的に「問題ない」が回答
3  選択範囲の行全てを // コメントアウトできるエディタを使えば解決、質問者はそれができるエディタを試すと言っている

はいもう終わってる案件です

701 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 08:28:10.97 ID:f9EfU1JG.net]
コメントの後に半角スペース入れる?

702 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 08:32:56.68 ID:6vAZQ0Iu.net]
>>690
質問者が終わっているのはわかっている
文意を読んでくれ

703 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 08:40:43.51 ID:AS58wzCZ.net]
if(false)なんてgrep結果も邪魔するし、
コードメトリクスとるとか、その他ソース解析的な事をしようと思ったら、悪影響を与える可能性が高い。
それに言語によっては到達不能コードが警告やコンパイルエラーになるから、同じプロジェクト内でも言語によって、違う消し方をしなきゃいけなくなる。

こんな消し方は悪でしかないよ(断言)

そもそもプログラム上不要なものを、消すんじゃなくてそれを無力化するための処理を埋め込む、という考え自体がずれてると思う。



704 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 08:57:29.68 ID:G034Tjvl.net]
コメントでコード残すより酷いよねw

コメントはコメントだからまだ使ってないコードだってわかるけど、
if(false)なんてしたら、何のためにこんなコード書いてるの?って
理由を調べることになる。

705 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 09:03:55.02 ID:BRy+Pidl.net]
一時的にコードをON/OFFしたいときに使うデバッグコードだろ

706 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 09:07:52.89 ID:anzRyrfi.net]
>695
じゃあ、それと間違えるからダメだな

707 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 12:22:52.37 ID:v9i1VCfv.net]
if (debug == true)
ならまだ分かるんすよ

708 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 12:43:43.87 ID:7VD60tyB.net]
まぁ、falseでなくて、何らかのfalseが中身の変数ならまだ納得は出来るんだけどね。
賢いエディタなら畳めるって意味くらいで。
最後にプリプロセッサで消して欲しいけど。

709 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 13:09:21.61 ID:yQckpqSo.net]
quick hackなら

710 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 16:36:51.98 ID:lkEDj6wo.net]
(function () { if (false) { function a() {} } a(); })()
これどうなるの?

(function () { 'use strict'; if (true) { function a() {} } a(); })()
これどうなるの?

(function () { 'use strict'; console.log(a); if (false) { var a = 123; } })()
これどうなるの?

711 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 16:51:45.47 ID:F8xSAXci.net]
(function () { if (false) { function a() {} } a(); })()
ReferenceError: a is not defined

(function () { 'use strict'; if (true) { function a() {} } a(); })()
SyntaxError: in strict mode code, functions may be declared only at top level or immediately within another function

(function () { 'use strict'; console.log(a); if (false) { var a = 123; } })()
undefined

712 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 16:53:39.26 ID:F8xSAXci.net]
(function () { if (false) { function a() {} } a(); })()
Object expected

(function () { 'use strict'; if (true) { function a() {} } a(); })()
'a' is undefined

(function () { 'use strict'; console.log(a); if (false) { var a = 123; } })()
undefined
undefined
eval code (4) (1,30)

713 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 16:55:09.66 ID:F8xSAXci.net]
(function () { if (false) { function a() {} } a(); })()
オブジェクトを指定してください。

(function () { 'use strict'; if (true) { function a() {} } a(); })()
'a' は定義されていません。

(function () { 'use strict'; console.log(a); if (false) { var a = 123; } })()
undefined
undefined



714 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 17:29:03.55 ID:lkEDj6wo.net]
>>701-703
ありがとうございます
マクロ風if文コメントアウトはクソの役に立つどころかクソ邪魔なそびえ立つクソのようですので
シングルラインコメントを使います

715 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 19:32:41.27 ID:HboDmfw3.net]
その結果をみてどうしてその判断になったのかは疑問だが、
一つ言えることはシングルラインだろうがなんだろうが、
デッドコードを残すのは良くない。
コメントは文章にだけ使え。

716 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 20:36:41.00 ID:B53lZWqj.net]
chromeのデバッガーで見ると、
グローバル変数名や関数名は
▼Scope
▼Global window
の中のメンバにありますが、
constで宣言した定数は
▼Script
の中にあります。
この定数名をプログラムから取り出したいのですが、方法が有れば教えて下さい。
グローバル変数ならwindowから取り出せたのですが。

717 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 20:50:05.86 ID:HboDmfw3.net]
with-proxyでも使って、どうぞ

718 名前:デフォルトの名無しさん [2016/01/30(土) 01:30:26.61 ID:1oljgPJ8.net]
WEB+DB PRESS vol.90 (2016)に、
Electronで、Windows, OS X, Linux用の、
HTML5デスクトップアプリを作る記事が載っている

JSの実行エンジンは、Node.jsで、
HTML5の実行環境は、Chromeのオープンソース版のChromium。
アプリに、これら2つを内蔵して配布する

Electronは、Atomエディタ、Visual Studio Codeで使われている

ローカルファイルにもアクセスでき、
OS内の別のアプリも起動できる・連携できる。
Drag & Drop, Clipboard も使える

Babelを使って、ECMAScript2015(ES6)でも書ける。
ReactのJSXも、Babel, gulp で変換できる。
AngularJSも使える

GUIは、jQuery UI、Reactなら、Material UI などを使って

719 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 10:43:58.68 ID:VBvWbxk4.net]
宣伝おめ

720 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 05:07:58.18 ID:003tX3GT.net]
AngularのDatePickerがクソで、勝手に時間帯変換するんだけど
なんか他にお勧め無いすかね

721 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 14:11:05.37 ID:AEa1Mqyg.net]
一つのhtmlファイルから複数のjsファイルを読み込んで実行する場合、グローバル変数はどのjsファイルのどの部分で宣言してもプログラム全体としては同じ動きをしますか?

722 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 14:34:54.46 ID:cx5Rrh1h.net]
ためせ

723 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 19:21:01.85 ID:xLFAyxDw.net]
タイミングによっちゃまだ宣言されてねえってこともあるかもね



724 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 04:22:13.19 ID:Ffe8O4Eb.net]
いや、全部読み込まれた後、全部が順序通り結合された1つのコードとしてパースされてから実行されるのでそれはない。

725 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 14:45:21.63 ID:FYMx+qz7.net]
つまり読むこむ順番を適切に書かないといけないから、答えはNOだ。

726 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 20:54:43.49 ID:kI0Xug8k.net]
いや、宣言は巻き上げされるのでどこで書いても良い。

727 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:44:41.59 ID:v8JCH8t3.net]
関数のでその変数を参照するような文を書いてたらダメだよ

728 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:48:43.77 ID:fURVaPFx.net]
関数宣言ならともかく、変数宣言は undefined で巻き上げされるのでどこに書いても同じ動作にはなるわけじゃない

729 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:51:52.10 ID:kI0Xug8k.net]
いや、宣言だけに限っては同じだろう
代入はまた別の話だし

730 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:55:57.07 ID:gPO3j3Rt.net]
>>717
ごめん。関数の外でって書いたつもりでしたw

731 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 22:58:49.36 ID:v+j1QZdW.net]
>>719
だから順番に影響するわけで、何処に書いても同じってわけじゃないよね。
まぁ、これはjsを別ファイルにするとか以前の話になってくるわけだけど。

732 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 23:16:56.16 ID:fURVaPFx.net]
>>719
var foo = 1; は「変数宣言と代入演算子の組み合わせ」ではなく「変数宣言」
あと、下位スコープの変数は参照不可能なので「どこに書いても」は成立しない

733 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 00:30:02.56 ID:dbeuEpdb.net]
>>722
いいや、今はそれについては言っていない。ちゃんと話の流れを見るように。
>>713
で分かる通り、タイミングと場所が関係あるかの話であって、一般的な話はしていない。



734 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 00:43:41.20 ID:/HZNIUzX.net]
>>723
私も「タイミングと場所が関係している」という話をしているのだが

foo; // ReferenceError: foo is not defined
function hoge () { var foo = 1; }

console.log(foo); // undefined
var foo = 1;
console.log(foo); // 1

735 名前:724 mailto:sage [2016/02/02(火) 00:46:32.06 ID:/HZNIUzX.net]
グローバル変数なので>>724の前者のコードはこうか
foo; // ReferenceError: foo is not defined
function hoge () { this.foo = 1; }
hoge.call(this);

736 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 01:33:45.90 ID:NUEtrHjv.net]
>>711
変数の宣言箇所と参照箇所の位置関係によっては同じ動きにはならない。
でFAです。
ファイルのロード順に気を付けてくだされ。

737 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:53:44.01 ID:H059HmUH.net]
>>724
だからそういう話はしていない。>>721が言っているようにそれは別の話。
自分はタイミングが関係あるかどうかの話だけをしてる。

738 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 13:19:10.18 ID:dh99WtH+.net]
>>727
私は>>716,719の「宣言は巻き上げされるのでどこで書いても良い」に反論しているだけだが、あなたの持論はどこにある?
どこに書いても良い事例となるコードで示してくれ

739 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 14:58:36.94 ID:3ts5bPpY.net]
グローバル変数の話してんじゃないん?

740 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 15:21:14.26 ID:dh99WtH+.net]
私はグローバル変数の話をしているのだが

741 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 16:33:02.97 ID:3ts5bPpY.net]
725のfunction hoge () { this.foo = 1; }は宣言か?

742 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 16:53:37.90 ID:dh99WtH+.net]
>>731
>>711の「宣言」は初心者の誤用だろうから「グローバル変数の初期化文」と勝手に置き換えている
>>725で書いたのはグローバルコードを想定していてグローバルオブジェクトのプロパティへの代入は該当すると思うが、どうか?
「プロパティ代入は宣言じゃない」という指摘なら、「変数文はあっても変数宣言はない。そもそも、>>711のいう宣言が何なのかを質問者に問うべき。」と反論するところだが
ついでに>>722で反論した部分も「13.3.2 Variable Statement」で規定されている
www.ecma-international.org/ecma-262/6.0/#sec-variable-statement

743 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 17:22:31.99 ID:dh99WtH+.net]
もう一つ追加で const, let は巻き上がらないので ReferenceError になるパターンがあるな

'use strict';
/* グローバルコード */
foo; // ReferenceError: foo is not defined
hoge; // ReferenceError: hoge is not defined
const foo = 1;
let hoge = 2;



744 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 19:28:13.95 ID:3N5KmsWz.net]
巻き上がらないのではなく未初期化状態で巻き上がる
それとlet/const宣言ではグローバル変数ではなく、
その直下の仮想ブロックスコープとして定義される
つまりグローバルオブジェクトのプロパティにはならない

745 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 19:46:52.83 ID:dh99WtH+.net]
>>734
巻き上げについては私の認識と一致してる
だからこそ「どこに書いても同じ処理にはならない」と思うが
const, let については不勉強だった
確かにグローバルオブジェクトのプロパティにはならないな…

746 名前:デフォルトの名無しさん [2016/02/02(火) 20:29:26.53 ID:3N5KmsWz.net]
>>723
ようやく君が何が言いたいのかは分かった
>>721>>714へのレスだと早とちりしてたみたいだ
しかし残念ながら>>716,719は別人だ

747 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:42:53.08 ID:dh99WtH+.net]
>>726
あなたは満足したようだが、私はあなたが誰かわかっていない
私の発言は>>718,722,724-725,728とID:dh99WtH+
>>716,719がおかしいと思うので>>723の「今はそれについては言っていない。ちゃんと話の流れを見るように。 」の反論の意味が分からなかった

748 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:01:38.63 ID:ju/2Ysiz.net]
いつまでどうでもいいこと続けるの?
これ以上質問者を置き去りにして言葉尻を取り合う喧嘩をしてもしょうがない。
仕様の宗教のような話なら別スレでどうぞ。

749 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:46:00.10 ID:N/tRsSuY.net]
名前欄に自分の元レスの番号付けるとかしないと、横レスだってあるんだし会話が成り立たないだろ。
お前らは誰と闘ってるだよw

750 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 21:50:59.18 ID:dh99WtH+.net]
誰と戦っているか分からない相手に明後日の方向に反論された気分
「そんな話はしていない」しか返さない相手と話すのが不毛だとは思ってるよ

751 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:58:02.10 ID:q1EzF9s6.net]
いつまで根に持ってるんだよw

752 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 02:33:05.91 ID:WMsKvupE.net]
会話しようとしている人が会話がどうでもいいと思っている人(自分の意見を出さずに相手から情報を引き出せればいい)に怒っている感じだな
会話が成立しないわけだ

753 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 07:34:25.05 ID:fNUqVTnf.net]
そもそも回答者同士が議論する場ではないよね



754 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 09:27:12.84 ID:ToDOcZiy.net]
結局はグローバル変数は宣言するファイルや場所が変わるとプログラムの挙動は変わる場合があるという結論でいいのですか?

755 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 09:39:11.07 ID:RqicRRsW.net]
意味が分からん。
どんな場合にも絶対こうなる、ってことは殆ど無いぞ。
もっと具体的で限定的な部分部分の話をした方がいい。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<290KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef