元スレ+ JavaScript の質問用スレッド vol.138 +
JavaScript覧 / PC版 /みんなの評価 :
351 = :
>>350-350
ありがとうございます!完全に分かりました。助かります…
352 = :
JavaScript のthis は、global のwindow などを指してしまうから、クソ仕様
だから、jQuery, Haxe では、this を修正している
353 = :
Rubyは最も一般的な方法で定義した関数(関数じゃないw)が値として取り回せない(第一級関数でない)クソ言語wwwww
def add(a, b)
a + b
end
def opTwo(a, b, func)
func(a, b)
end
p opTwo(1, 2, add)
=> Line 9:in `add': wrong number of arguments (0 for 2) (ArgumentError)
from t.rb:9
プギャーm9(^Д^ )
ちなみにPython:
def add(a, b):
return a + b
def opTwo(a, b, func):
return func(a, b)
print(opTwo(1, 2, add))
=> 3
ちなみにJavascript:
function add(a, b) {
return a + b;
}
function opTwo(a, b, func) {
return func(a, b);
}
console.log(opTwo(1, 2, add))
=> 3
354 = :
>>353
RubyにはRubyのやり方がある
はず
355 = :
やり方?
あるよねーいっぱいw
def 、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww
356 = :
>>347
逆ギレワロタw
357 = :
スクリプト内部でcreateElement('canvas')として動的にキャンバス要素を作成しているのですが、このキャンバスを右クリック、「名前をつけて画像を保存」を選択すると、すべてのファイル(*.*)となってしまいます。
jpegやpng形式で保存出来るようにしたいのですが、どうすればいいのでしょうか? どなたか教えて下さい。
使用しているブラウザはグーグルクロームです。
358 = :
保存ボタン付けるならやったことあるけど右クリックか。
どうやるんだろ?
359 = :
>>352
指してしまうってw
指す用に自分で書いてるだけなのに…
プログラムは思うようには動かんの
書いたように動くだけ
360 = :
>>345
thisは全ての関数内でキーワードとして動作する
だから「持つ」「持たない」というとそういう仕組みを持っているのかの話と
取られかねないのでオススメしない
thisキーワードは[[ThisValue]]が束縛され得る最も近いスコープを検索して
その[[ThisValue]]を参照しようとする
アロー関数の関数スコープは束縛しない事になっているので検索から外される
361 :
何を言ってるのか分からんが、少なくとも俺はアロー演算子を使わない方が良さそうということだけよく分かる
362 = :
なんでやねんw
363 = :
function hoge(){}
↑
hogeはwindow(global)のメソッドだからthisはwindow
var A = {
hoge : function(){}
};
↑
hogeはAのメソッドだからthisはA
var img = document.querySelector('#img');
img.addEventListener('click', A.hoge);
img.addEventListener('click', function(){ });
↑
imgにA.hogeという関数がバインドされて実行されるからthisはimg
ただし
img.addEventListener('click', () => { });
↑
アローの場合は、ひとつ上のスコープのthis
て理解であってますか?
364 = :
>>363
> var A = {
> hoge : function(){}
> };
>↑
>hogeはAのメソッドだからthisはA
A.hoge()で呼び出される限りにおいてはYes。
「FunctionオブジェクトがAのhogeプロパティに設定されている」だけで
必ずしも「Functionオブジェクトを呼び出したときのthisがAになる」わけではない
この辺がクラスベース言語のインスタンスメソッドとは違うので、混乱しやすいとこですね
365 = :
コールバック関数って数Ⅲに出てきた合成関数みたいな認識でいいんですかね?
367 = :
>>363
違う
thisは関数の呼ばれ方によって決まって
「.」演算子によってReference内部型が作られるときに決まる
直に呼ぶとsloppy modeのときはglobalになるという決まりなだけ
簡単に言うとobj.func()と呼んだ時onjがthisになるというだけ
thisは第0番目の引数とでも思えば良い
368 = :
>>365
見た目はそうだけど、そう言って良いもんかどうか
まあ引数に関数渡して、そっちで実行してねってやつだよ
例えば関数Aの後に関数Bを実行したいけど、Aが
function A(){
setTimeout(function(){
// ふはははは、いつ終わるかわかるまい!
}, Math.floor( Math.random() * 1000 ));
}
こんなのだと、Bをいつ発火させればいいかわからん
そんなとき
function A( callback ){
setTimeout(function(){
// おわたぁ!
callback();
}, Math.floor( Math.random() * 1000 ));
}
こうしておいて
A( B );
ってすれば、ちゃんとAが終わってからBが発火する、よね!
って考え方がコールバック
369 = :
数学の合成関数ってのは
x = y + 1 = f(y)、 y = z - 1 = g(z)
としたとき
x = f( g(z) )
と出来るねって話
これをプログラムっぽく書くと
function f(y){ return y + 1; }
function g(z){ return z - 1; }
x = f( g(z) );
こんな感じになる
これは関数fの引数に、関数gを実行した結果を渡しているわけであって
関数gを渡しているわけではない
のでこれはコールバックとは呼ばない、と思う
370 = :
数学の「=」は等号だけど
プログラムの「=」は代入なので
そのへん気をつけて
371 = :
漫画のコマ割りツールを作ろうとしているのですが
(1)テンプレート(ブログのカラムみたいな)方式
・1ページ分、コマ単体の中にさらにテンプレートを用意、みたいな
・テンプレート以外の微妙な調整ができない
(2)mousemoveなりで(居合斬りみたいに)直線で切り分け方式
・割った部分だけの削除後の再描画のアルゴリズムがよくわからない
・柔軟性あり
(3)線描画ツール方式
・特定の図形を描画できる
・テンプレート式だが柔軟性もある
・目視配置なのでズレが気になる(マス目内だけを移動するように補正すればよいかも)
を考えてみました(まだ作っていない)
何か効率の良いアイデアはないでしょうか?
(おそらく普通?は(2)のシミュレーション方式で、canvasに再描画する感じで
コマと枠線を選択し編集できる機能を別々に作ってー、という風にすると思うのですが
せっかくなのでブラウザとかHTMLやCSSをうまく組み合わせて効率よくできないものかと思ったのです)
すでに作ったもので言えば、DOM要素に横割り縦割り機能をつけ
要素を割ったら(要素の中に要素を作る)その中の要素にも縦横割り機能がつく、をループ(比率調整付き)
みたいなのは作ったのですが、垂直割りしかできないのでなんか今一です(キャプチャはブラウザの拡張)
要素を台形とかにできれば良いのですが・・
372 = :
>>370
JSの=は代入じゃない
所謂共有渡しにおける名前付け
373 = :
Assignment Operators
Syntax
http://www.ecma-international.org/ecma-262/5.1/#sec-11.13
JSで参照になるのはArrayや関数含めたオブジェクトで、数値やtrue/falseなどのプリミティブ値は値で、文字列はちょっと特殊じゃなかったっけ。
本当に全部参照になってるのはPythonだった気がする
374 = :
>>371
そのまま作り続けろ
1年後行き詰まるからCanvasで作り直せ
10年後良いものができてる
冗談でなくおれはそうしてものづくりをしてきてる
375 = :
>>373
JSに参照とかはない(Reference型はあるが)
値は基本的に複製されることはなく
すべて同一存在の名前付けの連鎖でしかない
要するにお前が会社ではタッ君と呼ばれ、家ではターちゃんと呼ばれてるのと同じ
376 = :
あんまり触らないほうがよさそうだな
377 = :
変に他の言語に引っ張らなければJavaScriptはシンプルでわかりやすい言語だと思うけどなぁ
378 :
簡単な電卓を作成できるようになった初心者ですが、
初心者から中級者を目指すのにオススメな参考書ってありますか?
JavaScript コードレシピ集か、改訂新版JavaScript本格入門とか
検討中です。レシピ集はアマゾンレビューで、この本を見て実際に
コードを書いて動かしてみる。という学習が一番身につくと思う
とか書かれてますが買った人いたら感想聞かせて欲しいです。
田舎すぎて置いてある本屋さんがありません。
379 = :
>>371
何かの図形描画ツールを参考にすれば?
380 :
今jsのロクでも無い部分ってあるのかな
昔はundefinedがうんちだった
381 = :
undefinedなんて実際に問題になることなかったろ
undefinedに何か代入するとかワザと壊しにかかってるんだからその結果壊れても問題ないでしょ
他にも置き換えられたら困るものなんて無数にあるんだし
383 = :
node.jsの使い途が分からない。
384 = :
>>383
使わなきゃいいじゃん
385 = :
使いみちが分からんものを使ってみるのも大事だぞ
そのときには使えなくても後々使うかもしれない
387 = :
Node.js、コマンドラインでは毎日使ってるし
(ただ単にバッチファイルをダブルクリックしたら起動してファイルを生成してくれるってだけだけど)
一応localhostでなんやかんやするやつのチュートリアルもやったけど
それらを組み合わせて色々するとなると、コールバック地獄とか大変だと聞くので
なかなか重い腰が上がらずにいる
うまく使えたらすごく良さそうだと思うんだけど
このへんどこで学んだらいいものか
388 = :
JSでclip-pathを操作したいのですが、検証ツールで見ると「at center center」というおかしな値になってしまっています。
JSで設定できないCSSプロパティがあるということでしょうか?
http://jsfiddle.net/0vrcehsf/1/
389 = :
VSCode で、Code Runner という拡張機能を入れて、右クリックメニューまたは、
Ctrl+Shift+P から、Run Code で、node.js で実行される
node は、npm, yarn を使うのに必須だから
他にも、webpack, babel, vue.js なども、たぶん、node が必須だろ
391 = :
Math.sign(a)
392 = :
同期処理と非同期処理がよくわかりません
iframe使ったら勝手に非同期処理になるんですか?
393 = :
a>0?1:a<0?-1:0
394 = :
>>391
それでした!ありがとうございます
危うく >>393 みたいなことするところでした
395 = :
まぁ0きたときに微妙かもしれんが
396 = :
(a<0)*-1||1
397 = :
>>393 みたいなことしたら何かマズいのか?
398 = :
別に>>391の方が性能や可読性高いわけでもなし、>>393で何の問題もないと思うけど
399 :
>>391
はカッコイイけど俺の可読性が低いので使わないと思う
signとか距離求めるっ時ぐらいしか使わないよぉ
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.130 + (1001) - [97%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.130 + (974) - [97%] - 2016/10/26 14:18
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [97%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.133 + (1001) - [97%] - 2018/6/8 10:45
- + JavaScript の質問用スレッド vol.128 + (1001) - [97%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.134 + (1001) - [97%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.136 + (1001) - [97%] - 2019/1/8 11:30
- + JavaScript の質問用スレッド vol.137 + (1003) - [97%] - 2019/3/26 11:46
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [95%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.116 + (1002) - [95%] - 2014/7/1 0:45
- + JavaScript の質問用スレッド vol.119 + (1002) - [95%] - 2014/10/3 15:30
トップメニューへ / →のくす牧場書庫について