のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,617,590人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
54 : Name_Not - 2014/01/26(日) 00:57:44.94 ID:vJwdMZrJ (-7,+29,-32)
最近良く見かける、無名関数を変数に入れて使うのってなんかメリットあるの?
普通に関数定義して呼び出すのでよくね?
56 : Name_Not - 2014/01/26(日) 01:12:21.83 ID:??? (+3,-30,-166)
>>51
>>52
それは違う。たまたまグローバルオブジェクトがwindowなだけ。
未定義の変数を直接参照するとエラーになるけど、
windowオブジェクトのプロパティとして参照するとundefinedが返る。
つまり、hogeが定義されていなければ、
alert(hoge); //エラーになる
alert(window.hoge); //undefinedと表示される
57 : Name_Not - 2014/01/26(日) 03:11:34.03 ID:??? (-4,-23,-3)
>>55
var aも巻き上げられるじゃん?
58 : Name_Not - 2014/01/26(日) 03:27:44.89 ID:??? (+91,+29,-4)
関数は全部先頭にかけってことでしょ?
59 : Name_Not - 2014/01/26(日) 03:39:41.28 ID:??? (-6,-30,-60)
>>53
encodeURIComponent(prompt('Enter'))
?とか他にもエンコードしなきゃ駄目な文字は有るしencodeURIComponent使っとけ。
ていうかそんだけならreplace(/ /g,"+")でいいし、そもそも特に連想配列使ってねぇだろソレ
60 : Name_Not - 2014/01/26(日) 03:54:46.57 ID:??? (+77,+29,-13)
>>58
意味がわからん。

そもそも多くの言語で関数はどこに書いてもいいものだよね?
61 : Name_Not - 2014/01/26(日) 06:03:56.82 ID:??? (+12,-30,+0)
>>50 圧縮の時ネームスペースmに勝手にバインドされることで悪影響が出ないことを保証するためのもので、良いものではない
>>51 OK

>>60
good partsはだいぶ古い情報だから今は当てにしなくていい
あれはJSにコーディングスタイルというものが根付いてなかったときに、根付かせようとしたものだから
「道で人に出会ったら挨拶しましょう」みたいなもので、良い悪いの基準が違う

もう一つ言えばブロック文(ifなんか)中の関数宣言の挙動が定義されてなかったというか、
本来ESの仕様では出来ないはずなのに実装では独自に出来るようにして、挙動差があったりもしてた
そういう少しでも怪しい物には触らないようにして、JSをきっちり書いていこうというスタンスがgood parts

因みにその件はES5のstrict modeで一旦禁止され(形だけ)、ES6で『ブロックスコープ内(let)』の『全域(var)』で有効になった、つまり
function func() {} は var func = ~ でも let func = ~ でもなく、その中間の挙動を取る
Chromeはもうその通りの挙動をする、Firefoxは無茶苦茶、他は知らん
62 : Name_Not - 2014/01/26(日) 06:44:06.68 ID:??? (-2,-30,-130)
>>51
>>52
>>61
addEventListnerと書きたい場所で参照されるスコープのどこかでaddEventListnerを定義して無ければOK
addEventListnerが定義されてたらwindow.addEventListenerとかにしないとそっちを参照してしまうからNG
被せて定義してくる方が悪いって大抵は言われると思うし普通は気にしなくてもいいんだけどな
63 : Name_Not - 2014/01/26(日) 07:03:09.71 ID:??? (+29,-29,-28)
今世紀最大のバカwwwwwww
addEventListnerなんかよりwindowの方がよっぽど定義され得るだろww
どうしてそっちは考えないんだよワロスプゲラw
64 : Name_Not - 2014/01/26(日) 10:13:26.62 ID:??? (+11,-29,-43)
JavaScriptにはfromCharCode()という関数がありますが、
文字列をコード配列に変換する関数(逆方向の関数)は無いのでしょうか?
65 : Name_Not - 2014/01/26(日) 12:28:39.87 ID:??? (+100,+29,-7)
>>63
windowは上書き禁止
今世紀最大のバカとか、いきり立つのも程々に
66 : Name_Not - 2014/01/26(日) 12:31:44.10 ID:??? (+40,-30,-33)
>>64
String.prototype.charCodeAt
http://es5.github.io/#x15.5.4.5
67 : Name_Not - 2014/01/26(日) 13:04:23.67 ID:??? (+70,+29,-26)
>>65
windowは上書き禁止だが、スコープチェーンにのせることは出来る
それはそうと気の触れた人にはあまり触らないほうがいい
68 : Name_Not - 2014/01/26(日) 13:21:03.48 ID:??? (+36,-29,-26)
>>66
配列にしたかったら、文字数分ループして、code[]=charCodeAt(i);すれば良いということですか?
69 : Name_Not - 2014/01/26(日) 13:22:45.90 ID:??? (+35,-29,-3)
× code[]=charCodeAt
○ code[]=string.charCodeAt
です、ごめんなさい
70 : Name_Not - 2014/01/26(日) 13:42:31.39 ID:??? (-1,-29,-30)
>>68-69
JavaScript では "code[]=..." の書き方はできないが、ロジックは合ってる
71 : Name_Not - 2014/01/26(日) 13:44:59.14 ID:??? (+13,-30,-51)
"abc".split('').map(function(ch) {return ch.charCodeAt()})

"abc".split('').map(ch => ch.charCodeAt())
72 : 71 - 2014/01/26(日) 13:45:44.26 ID:??? (+91,+29,-32)
ロジックは合ってるがそんな冗長なコードは書かない。
73 : Name_Not - 2014/01/26(日) 14:08:13.75 ID:??? (+39,-30,-83)
パフォーマンス重視でfor文にしてる

function toStringCodes (string) {
 for (var i = 0, l = string.length, array = []; i < l; ++i) {
  array.push(string.charCodeAt(i));
 }

 return array;
}

toStringCodes('abc'); // [97, 98, 99]
74 : Name_Not - 2014/01/26(日) 14:28:03.06 ID:??? (-1,-29,-51)
String.prototype.map は未定義なんだね。
String.prototype.replace で代用可能だけど、いまひとつスマートじゃないなあ。
75 : Name_Not - 2014/01/26(日) 14:45:40.42 ID:??? (+67,+29,-30)
スリムな方は>>72、パフォーマンス重視は>>73ですね。
>>69,71-74の皆さんありがとうございました!
76 : Name_Not - 2014/01/26(日) 14:47:05.12 ID:??? (+96,+29,-42)
また間違えました、>>68,70-74の皆さんです、ごめんなさい
本当にありがとうございました。
77 : Name_Not - 2014/01/26(日) 15:07:56.49 ID:??? (+68,+29,-17)
>>76
別にいいんだけど、レスアンカーは>>66,70-74が正しいんじゃない?
78 : Name_Not - 2014/01/26(日) 16:11:57.79 ID:??? (+131,+29,-7)
めんどくせーから、>>78さんありがとうございました! でいいだろ。
79 : Name_Not - 2014/01/26(日) 18:09:59.57 ID:??? (+63,+17,+0)
>>78さんありがとうございました!
80 : Name_Not - 2014/01/26(日) 21:05:17.95 ID:1BaABsb4 (+74,-30,-43)
var
 foo = tonikaku.nagai.namae,
 bar = foo.puropati,
 nullpo = (function(){ return bar * 10; })(),
 gatxu = (function(){ return nullpo * 100; })(),
 .....

↑こんな風に変数の宣言を
カンマでどんどん繋げる書き方って問題ですか?
なんか書きやすいので、こうしているのですが・・・。
81 : Name_Not - 2014/01/26(日) 21:10:26.44 ID:??? (+34,-30,-63)
window.onresize = function() {
window.alert("hellow")
}

この構文なんて名前ですか?
window.onresizeはonclick, onmouseover とかのイベントと何か違いますか
82 : Name_Not - 2014/01/26(日) 21:12:00.13 ID:??? (+60,+29,-3)
>>81
構文じゃない
違わない
83 : Name_Not - 2014/01/26(日) 21:16:31.40 ID:??? (+57,+29,-67)
>>80
jQueryとか更にひどいし、
そういうふうにしろって言ってる人もいる。

個人的にはあまり多すぎるとシンタックスエラー出た時に
場所がよくわからなくなるから、数個程度にしたり
複雑なコードは書くなって思うが。
84 : Name_Not - 2014/01/26(日) 21:22:27.19 ID:??? (+2,-29,-10)
var hoge,
hoge2,
hoge3;
こっちのが見やすくないか?
85 : Name_Not - 2014/01/26(日) 21:23:58.54 ID:??? (+67,-29,-31)
var hoge, hoge2, hoge3;

こっちの方がいい。無意味にコードの行数増やすなよ。
スクロールする必要が増えてあっちこっち見なくちゃいけなくなるだろ?
86 : Name_Not - 2014/01/26(日) 21:30:00.21 ID:??? (+6,-24,+0)
>>82 thank
87 : Name_Not - 2014/01/26(日) 22:33:06.95 ID:??? (+62,+29,-25)
>>85
見る人のエディタの横幅にもよる
必ずしも横に長く縦に短くが良いわけでもない
難しいところじゃが
88 : Name_Not - 2014/01/26(日) 22:48:51.61 ID:??? (+61,+29,-48)
>>80 の書き方、
jQueryも使ってるって事は何かメリットあるのかな?
少しだけ処理が速いとか・・・。
そうでもなかったら一行ずつ var いれた方が見やすい気がする。
89 : Name_Not - 2014/01/26(日) 23:20:47.22 ID:??? (+57,+29,-66)
速度は変わらん
こればかりは好みの問題だな
jQuery作者がああ書くのをコーディングルールにしたんだろうさ
90 : Name_Not - 2014/01/26(日) 23:28:29.59 ID:??? (+6,-30,-47)
>>88
1行ずつ var を入れたら行数文だけ VariableStatement が増えるので遅くなる。
理論上は VariableStatement が一つだけの方が処理速度は速い。
91 : Name_Not - 2014/01/27(月) 00:11:59.00 ID:??? (+69,+29,-32)
>>80 の書き方はシンプルでいいと思うけど、カンマ忘れてもエラーにならないのがな…
安全策として先頭にvar入れていった方がいいと思う

初期化がいらない場合は、>>85 を使う
92 : Name_Not - 2014/01/27(月) 00:59:36.03 ID:??? (+2,-29,-45)
セミコロン付け忘れはJSLintでチェックできるので>>80を使う
93 : Name_Not - 2014/01/27(月) 01:04:20.57 ID:??? (+37,-30,-34)
>>91
カンマ忘れたらエラーになったが…。

var hoge,
hoge2
hoge3; // ReferenceError: hoge3 is not defined
94 : Name_Not - 2014/01/27(月) 01:09:48.84 ID:??? (+13,-30,-11)
>>93
var hoge = 1,
hoge2 = 1
hoge3 = 1

こういうことじゃろ
95 : 94 - 2014/01/27(月) 01:12:41.66 ID:??? (+37,-29,-7)
>>94
なるほど。
その問題は JSLint や Strcit Mode で回避できるな…。
96 : 95 - 2014/01/27(月) 01:13:36.17 ID:??? (+47,+18,+2)
失礼。
>>93 === >>95
97 : Name_Not - 2014/01/27(月) 01:41:06.13 ID:??? (+61,+25,-13)
>>80
最初に全部代入せずに宣言するのが至高
98 : Name_Not - 2014/01/27(月) 01:51:10.94 ID:??? (+57,+29,-59)
宣言と宣言&代入を混ぜて書いていた時には、どこまでを宣言に含めるか悩んでいたものだけど
至高の宣言に辿り着いてからはそんな悩みなど無縁
使う直前に代入するから分かりやすい
99 : Name_Not - 2014/01/27(月) 01:56:27.20 ID:??? (-1,-29,-32)
>>84
var foo
, bar
, baz;

のようなスタイルもある
見てすぐ行の継続が判るのと、行末のカンマを打ち忘れない所がよい
100 : Name_Not - 2014/01/27(月) 02:38:36.93 ID:??? (+6,-30,-26)
textareaだとCSSの属性を揃えてもブラウザ間の見た目が変わるので
contenteditable=trueでtextareaを実現しようと思うのですが
どうやればいいですか?
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について