元スレ+ JavaScript の質問用スレッド vol.121 +
JavaScript覧 / PC版 /みんなの評価 :
151 = :
>>149
そっちでやります。
仕事で早いんで、もう寝ます。朝に書き込みます
152 = :
荒らしいるんですか、じゃあ、直接、出版社に言います
153 = :
よっっぽど特異なコードでない限りNYSLだよ
コピペして問題なし
156 = :
よく出来ました。○
160 :
5ボタンマウスの戻る 進むが通常割り当てられているx1 x2をJavascriptで捕捉することって出来ないですか?
特定のサイトでマウスの誤操作による戻るを無効化するスクリプトを書きたいのですが
他に良い案があればそれも教えて頂きたいです。
161 = :
ホイールだけでブラウザ対応が違うからなあ
何かするサイトじゃなければイベント全部return false;でいんじゃね~
162 = 160 :
何かするサイトなんでそれはちょっと難しいですね…。
使ってるのはFirefoxです。Grease Monkeyでそのサイトでだけ戻るや更新を禁止して作業の損失を防ぎたいのですが、調べてると難しそうですね。
163 = :
イベント時に何で戻ったかを調べてreturn false;すればよさげだけど
戻る禁止ってブラクラになるからダメなんだっけ
165 = :
>>148
何も注意書きがなければMITライセンスってのになる
これはどこどこからのコピーですといえばコピーしておk
166 = :
先生!
>>155はinnerHTMLを使ってるようですがいいんですか!?
168 :
>>166
ジャガリキン氏の良い所は、とりあえず形にして見せてくれること
細かい善し悪しは、フォークして直していけばいい
169 = :
var outputlog = function(level, msg){
console.log("["+level+"]"+msg);
};
var outputlogCreator = function(level){
return function(msg){
//outputlog("debug", msg);←間違え?"debug"でなくlevelのはず
outputlog(level, msg);
};
};
var test1 = function(t,logger){
logger('あああああ')
logger('いいいいい')
}
var newoutputlog = outputlogCreator( "DEBUG2");
test1(2,newoutputlog);
クロージャの使い方で雑誌の記事では、
ライブラリtest1のlogger関数は引数1つだけど、引数2つのoutputlogを渡すために、
クロージャを使ったoutputlogCreatorを使う方法が載ってましたが、
var newoutputlog = outputlogCreator( "DEBUG2");の"DEBUG2"を反映させるために
//outputlog("debug", msg);ってoutputlog(level, msg);ではないでしょうか?
170 = :
>>165
ライセンスが明示されてないなら不明であって本人に聞くまでライセンスは決まらない
「引用」はライセンスに関係なく、自由に出来るけど
>>169
出典は?
引用にもなってない
171 = :
>>170
>>148
関数の名前とか変数とかは変えてあります。
172 = :
>>169
汚かったから直した。関数を必要のないのにいちいち変数に入れるなよな。(オリジナルを書いた人へ)
所詮日経ソフトウェアか。
君の言うとおり。そこは間違いだよ。
function outputlog(level, msg) {
console.log("["+level+"]"+msg);
}
function outputlogCreator(level) {
return function(msg) {
outputlog(level, msg);
};
}
function test1(t, logger) {
logger('あああああ');
logger('いいいいい');
}
var newoutputlog = outputlogCreator("DEBUG2");
test1(2, newoutputlog);
173 = :
なるほど、関数名は君がつけたのか。
outputlogCreator はcreateLoggerの方がいい。
これはクラスじゃなくて関数だから、動詞+名詞 にする。
174 = :
>>172-173
ありがとうございます。
やっぱ間違えですが、
>汚かったから直した。関数を必要のないのにいちいち変数に入れるなよな。(オリジナルを書いた人へ)
関数を変数に入れるのって、だらしないコードを書かないためって
good partsに書いてあったので、その考え方ではないのかと思ってます。
>>173
はい。関数名には、動詞+名詞って命名します。
日経ソフトウェアでは~Creatorって載ってました。
class使う人書き方だったんですね。
だいたい昼休みは日経ソフトウェア読んでるのですが、コードの
間違えって結構ありますね。
まぁ、掲載プログラムは記事補足用で動作保証しないって冒頭に書いてありますけど
175 = :
あー、あの本か。あれは俺が考えた最強~略だからな。
なんで「だらしないコード」って言ってるかわかる?
説明できないからなんだよ。
他の言語とか使っていればわかるけど、
普通は関数の順番はどっちを先に書いても良いものなんだ。
変数に代入すると、それができなくなるというデメリットが有る。
順番を考えなくていいものに、わざわざ不要な順番という概念を持ち込むことになる。
それに行頭がfunctionから始まると、ここが処理の開始地点だとぱっと見わかるし、
変数に代入しない分単純にタイプ数が短くなる。
昔から関数の定義は「function 名前」なわけで、式で書けるからといって
なんでも式を使うというのは何も考えてないだけ。適切なものを正しく使うべき。
178 = :
むり
181 = :
関数の巻き上げとは、前方宣言がいらないこと
関数定義より先に、その関数を使える
関数宣言(function文)
一方、関数式は、関数を変数に代入したもの
どういう時に、どっちを使えばよいのか、わからない
182 = :
既存のくそ長い関数名を短くできるぐらいかな
183 = :
こーゆーの?funcはいつ使うかわからないとして
if(なんたらかんたら){
func=function(){alert("なんたら");}
}else{
func=function(){alert("かんたら");}
}
func();
184 = :
>>176
function文は存在しない(Firefoxにそれらしき独自拡張はあるけど)
関数宣言や関数定義というならわかる
> function式はどこに書いても動くのがだらしないコード
関数定義とfunction式を逆に覚えてるんじゃないか?
関数定義なら関数スコープの始めに変数の実体化が発生するのだが
その手のコーディングスタイルを気にするなら関数の始めに関数定義、変数宣言すると良い
function式を使うのなら関数名は付けた方がよい(IE8-の名前付き関数式の挙動に注意)
185 = :
>>155
全ては読んでないんだが、グローバル変数を多数定義しているのが一番気になる
createElement を多用しながら innerHTML を使うスタイルにも違和感があるが
186 = :
関数式は俗に言う無名関数とかいうやつでもよく使うね
190 = :
>>188
「他のスクロール」の定義が分からんのだが、具体的に何が違う?
ノードが違えば event.currentTarget で判断可能だろう
191 = :
>>189
> ブロック内にfunctionを書くのは未定義な仕様だから
そもそもifでfunctionって書きたいことってないだろう?
動的に関数を作りたい時と静的に関数を作りたい時
人はこの二つを完全に区別して考えてるよね?
function foo() { } って書いてあったら
この関数はfooという名前であり、fooにはこの関数以外になることはない。
var foo = function() {} って書いてあったら
これ多態かな? もしかしてfooには別の関数が入ることがある。
と考えてるでしょ?
ifの中でfunctionを書きたくなることはないが、
fooに関数を代入したいことはある。それはifの条件によって
fooに入れる関数を変えたい時。すなわち多態。
fooに入れる関数が変わらないのならfunction foo() {} って書いたほうが
明確だよね。
192 = :
>>181
> どういう時に、どっちを使えばよいのか、わからない
普通は関数定義だよ。なぜなら殆どの場合
関数の名前(変数)とそれが示す関数は変わらないから。
もし、変数に入れる関数が変わることがあるならば、
関数式を使えば良い。
194 = :
>>191
>var foo = function() {} って書いてあったら
>これ多態かな? もしかしてfooには別の関数が入ることがある。
関数定義でも後から再代入すれば foo が別の関数を参照する状況を作り出せるはずだが
function foo () { console.log('a'); }
function hoge () { console.log('b'); }
foo = hoge;
foo(); // b
関数式にすれば、現仕様(ES5)でも>>189の状況を作り出すことは出来る
var x =0.
foo = x ? function foo () { console.log(foo.name); } : function hoge () { console.log(hoge.name); };
foo(); // hoge
多態性は String.prototype.toString と Object.prototype.toString の関係と理解していたのだが、私の理解が間違っているのだろうか
197 = :
$("#ultest > li").on("click",function(){
alert("test");
});
$("#add").click(function(){
$("#ultest").append("<li>あああ</li>");
});
これで後から追加したli要素をクリックしてもポップアップが出ません。
onって将来的に追加した要素でも動くんじゃなかったんでしょうか?
199 = :
>>197
書き方が違う。こうだよ。
$(document).on("click", "#ultest > li", function(){
alert("test");
});
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.121 + (1001) - [100%] - 2022/11/29 16:30
- + JavaScript の質問用スレッド vol.141 + (881) - [97%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.120 + (1002) - [97%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.122 + (1004) - [97%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.122 + (116) - [97%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.128 + (1001) - [97%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.123 + (966) - [97%] - 2020/10/20 2:30
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.126 + (952) - [97%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.126 + (348) - [97%] - 2023/1/12 17:00
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.123 + (1002) - [97%] - 2015/4/27 23:30
トップメニューへ / →のくす牧場書庫について