私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.93 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
c=0; if (なんか条件) c+=1;
とあるソースコードで上記のコードを見かけたんだけど
これってc=0;の代入じゃなくてc+=1;の加算代入にしてる意味って何かあるの?
とあるソースコードで上記のコードを見かけたんだけど
これってc=0;の代入じゃなくてc+=1;の加算代入にしてる意味って何かあるの?
上記は誤記した、下記に質問書き直す
c=0; if (なんか条件) c+=1;
とあるソースコードで上記のコードを見かけたんだけど
これってc=1;の代入じゃなくてc+=1;の加算代入にしてる意味って何かあるの?
c=0; if (なんか条件) c+=1;
とあるソースコードで上記のコードを見かけたんだけど
これってc=1;の代入じゃなくてc+=1;の加算代入にしてる意味って何かあるの?
if文で{}括弧使わずカンマで区切って使ったりすると文字数が減る
if (a==b) {a=10; b=20; c=30;}
if (a==b) a=10, b=20, c=30;
if (a==b) {a=10; b=20; c=30;}
if (a==b) a=10, b=20, c=30;
>>303
な、なるほどこんな使い方が
な、なるほどこんな使い方が
>>300
やはりリークするのですね、ありがとう
そこで疑問ですが、大きなアプリケーションなどを作る方はどのようにイベントリスナーの追加や削除をしているのですか?
追加するときにいちいちdocument.addEventListener ? ~ : ~;などとやっているのでしょうか
それとも関数を使って必ずdetach/removeするという形にしているのでしょうか
やはりリークするのですね、ありがとう
そこで疑問ですが、大きなアプリケーションなどを作る方はどのようにイベントリスナーの追加や削除をしているのですか?
追加するときにいちいちdocument.addEventListener ? ~ : ~;などとやっているのでしょうか
それとも関数を使って必ずdetach/removeするという形にしているのでしょうか
通常の式内に混ぜてしまうとか
b = 1, c = 2, g = 3;
a = b + c + (d = 10, e = 12, f = 13) + g; // a = 19
b = 1, c = 2, g = 3;
a = b + c + (d = 10, e = 12, f = 13) + g; // a = 19
var a = 0;
var b = 0;
を
var a = 0, b = 0;
と書いてコードがババァにならないようにするとか。
var b = 0;
を
var a = 0, b = 0;
と書いてコードがババァにならないようにするとか。
いっそif文やwhile文の条件式に使ってみたり
if (a = 1, b = 2, a != b) alert('baka');
if (a = 1, b = 2, a != b) alert('baka');
>>307
こんな風に並んでたとして
処理順が変わった時にそのまま貼り付けできるようにしてるとかゆー事もあるよ
c=0;
if (なんか条件1) c+=1;
if (なんか条件2) c+=1;
if (なんか条件3) c+=1;
こんな風に並んでたとして
処理順が変わった時にそのまま貼り付けできるようにしてるとかゆー事もあるよ
c=0;
if (なんか条件1) c+=1;
if (なんか条件2) c+=1;
if (なんか条件3) c+=1;
>>310それカンマ演算子ちゃう
function hoge() { alert('hoge'); }
if (a = 1, hoge(), a != b) alert('baka'); //hogeる
var b=1, hoge(); //エラー
function hoge() { alert('hoge'); }
if (a = 1, hoge(), a != b) alert('baka'); //hogeる
var b=1, hoge(); //エラー
>>307
http://tenhou.net/2/agari1001.js
具体的にはこれのコードなんですけど
こんな感じでコピペのためとは思えなくって
isMentsu:function(m){
var a=(m&7), b=0, c=0;
if (a==1 || a==4) b=c=1; else if (a==2) b=c=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a!=0 && a!=3) return false;
m>>=3, a=(m&7)-c;
return a==0 || a==3;
},
http://tenhou.net/2/agari1001.js
具体的にはこれのコードなんですけど
こんな感じでコピペのためとは思えなくって
isMentsu:function(m){
var a=(m&7), b=0, c=0;
if (a==1 || a==4) b=c=1; else if (a==2) b=c=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a<0) return false;b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
m>>=3, a=(m&7)-b;if (a!=0 && a!=3) return false;
m>>=3, a=(m&7)-c;
return a==0 || a==3;
},
b=c, c=0;if (a==1 || a==4) b+=1, c+=1; else if (a==2) b+=2, c+=2;
↓
b=c, c=0;if (a==1 || a==4) b+=1, c=1; else if (a==2) b+=2, c=2;
つまり人がコードを読む上で上記の2つでは何か意味が違うってことですか?
↓
b=c, c=0;if (a==1 || a==4) b+=1, c=1; else if (a==2) b+=2, c=2;
つまり人がコードを読む上で上記の2つでは何か意味が違うってことですか?
>>317
加算代入じゃなくただの代入文だと数値じゃなく文字列として初期化されるってことなのでしょうか?
加算代入じゃなくただの代入文だと数値じゃなく文字列として初期化されるってことなのでしょうか?
実行結果に変わりがあるわけじゃないんだし好きに書けばいいじゃないか
こんなくだらないことに拘って質問しまくんなよ
こんなくだらないことに拘って質問しまくんなよ
ここm>>=3, a=(m&7)-b;やここb=c, c=0;をセミコロンじゃなくカンマで区切ってる意図もわからんな
実は裏技でね
a = 1; b = 1; よりも a = 1, b = 1; にしたほうが処理速度が少し向上するの
実は裏技でね
a = 0; a = 1; よりも a = 0; a += 1; のほうが処理速度が少し向上するの
a = 1; b = 1; よりも a = 1, b = 1; にしたほうが処理速度が少し向上するの
実は裏技でね
a = 0; a = 1; よりも a = 0; a += 1; のほうが処理速度が少し向上するの
コンマだと次は必ず式が来るがセミコロンだと次が式とは限らんだろ
コード解析処理に違いがあるだろ
コード解析処理に違いがあるだろ
314はfor使わずに同じコードわざわざ羅列してんのは速度重視してんの一目で分かるだろ
ここできくのがいいのかわからないけど質問します。
ブログの最新記事のみに広告表示させたいんですが、
javascriptでできます?
ブログの最新記事のみに広告表示させたいんですが、
javascriptでできます?
>>330
できます。
できます。
>>395,306
原始的な addEvent なら
http://gist.github.com/758906/db5cd03c967c368a50d095854850fb16cf9f95b3
this 値を書き換えたいなら、window unload 時に detachEvent してください。
http://gist.github.com/758906/0e1047fea1f2bf4781811cc3e6d281196448b597
this 値に手を出すなら event まで書き換えておけば面倒がなくて良いと思います。
原始的な addEvent なら
http://gist.github.com/758906/db5cd03c967c368a50d095854850fb16cf9f95b3
this 値を書き換えたいなら、window unload 時に detachEvent してください。
http://gist.github.com/758906/0e1047fea1f2bf4781811cc3e6d281196448b597
this 値に手を出すなら event まで書き換えておけば面倒がなくて良いと思います。
次スレのテンプレにこれもいれて
http://cou929.nu/data/google_javascript_style_guide/
http://cou929.nu/data/google_javascript_style_guide/
>>306
コンテキスト共有の必要がない単発イベントならバブリングを使ってdocumentで監視しろ
コンテキスト共有の必要があるならthisにそれを持たせろ
それだけで循環参照はほぼ防げる
コンテキスト共有の必要があり、かつIEを考慮するなら最後にdetachEventしろ
XHRならonreadystatechangeにnullでも突っ込め
クロージャーを使うな
eventとthisだけで必要なものを受け渡せるようにしろ
コンテキスト共有の必要がない単発イベントならバブリングを使ってdocumentで監視しろ
コンテキスト共有の必要があるならthisにそれを持たせろ
それだけで循環参照はほぼ防げる
コンテキスト共有の必要があり、かつIEを考慮するなら最後にdetachEventしろ
XHRならonreadystatechangeにnullでも突っ込め
クロージャーを使うな
eventとthisだけで必要なものを受け渡せるようにしろ
オブジェクト指向の書き方を教えてください
PHPでいう以下の書き方をprototypeを使わない方法でjavascriptで書くとどう書けますか?
class A
{
private $string;
function _construct($arg)
{
$this->string = $arg;
}
public function echo()
{
return $this->string;
}
public function view()
{
return $this->hidden();
}
private function hidden()
{
return "秘密のあっこちゃん";
}
}
$obj = new A("文字列");
print $obj->echo();
print $obj->view();
PHPでいう以下の書き方をprototypeを使わない方法でjavascriptで書くとどう書けますか?
class A
{
private $string;
function _construct($arg)
{
$this->string = $arg;
}
public function echo()
{
return $this->string;
}
public function view()
{
return $this->hidden();
}
private function hidden()
{
return "秘密のあっこちゃん";
}
}
$obj = new A("文字列");
print $obj->echo();
print $obj->view();
> function() { location.href = 't2.html'; }
この関数式が評価されスコープチェーンが形成されるとき
実行中の関数(test)が持つスコープチェーンが渡され加えられる。これがクロージャね。
循環参照となるオブジェクトはスコープチェーンの中ってことですよ。
この関数式が評価されスコープチェーンが形成されるとき
実行中の関数(test)が持つスコープチェーンが渡され加えられる。これがクロージャね。
循環参照となるオブジェクトはスコープチェーンの中ってことですよ。
>>341
var listener = {
draggable: false,
handleEvent: function(e) {
switch (e.type) {
case 'mousedown': this.dragging = true; return;
case 'mousemove': ...; return;
case 'mouseup': this.dragging = false; return;
}
}
};
document.addEventListener('mousedown', listener);
document.addEventListener('mousemove', listener);
document.addEventListener('mouseup', listener);
Netscapeのversion.6からこう書けた
Safariはversion 3、Operaは忘れたが、DOM4に入った(第三引数の省略も)
コールバックに渡す任意の「引数」としてthisを使えばスコープ依存を断ち切れる
thisの使い方を知らない「らいぶらり」があまりに多すぎる
var listener = {
draggable: false,
handleEvent: function(e) {
switch (e.type) {
case 'mousedown': this.dragging = true; return;
case 'mousemove': ...; return;
case 'mouseup': this.dragging = false; return;
}
}
};
document.addEventListener('mousedown', listener);
document.addEventListener('mousemove', listener);
document.addEventListener('mouseup', listener);
Netscapeのversion.6からこう書けた
Safariはversion 3、Operaは忘れたが、DOM4に入った(第三引数の省略も)
コールバックに渡す任意の「引数」としてthisを使えばスコープ依存を断ち切れる
thisの使い方を知らない「らいぶらり」があまりに多すぎる
a = b = 1;
var a = b = 1;
それと、これは全く意味が異なるから、並列に語れない。
前者は代入式、値が返る。
後者は (変数 a の) 変数宣言、値は返らない。
var a = b = 1;
それと、これは全く意味が異なるから、並列に語れない。
前者は代入式、値が返る。
後者は (変数 a の) 変数宣言、値は返らない。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.93 + (1001) - [100%] - 2012/1/1 4:46
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.96 + (1001) - [97%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.95 + (1001) - [97%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.131 + (1000) - [95%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [95%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [95%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.133 + (1001) - [95%] - 2018/6/8 10:45
トップメニューへ / →のくす牧場書庫について