X



JavaScript 4©2ch.net
0001デフォルトの名無しさん 転載ダメ©2ch.net2014/12/05(金) 12:19:07.19ID:fmzBASgG
( ^ω^) 初学者・迷子・ロリ幼女はこちらで
  _、_
( ,_ノ` ) プロフェッショナルはECMAScript デス 4へ

【前スレ】
JavaScript 3
http://peace.2ch.net/test/read.cgi/tech/1380177260/

【関連スレ】
ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/
CoffeeScript
http://peace.2ch.net/test/read.cgi/tech/1320949260/
TypeScript part1
http://peace.2ch.net/test/read.cgi/tech/1349187527/
構造化ウェブプログラミング言語Dart2
http://peace.2ch.net/test/read.cgi/tech/1319388343/
Microsoft SkyDrive API
http://peace.2ch.net/test/read.cgi/tech/1385604796/
【MACRO】Google Apps Script 質問スレ【DRIVE】
http://peace.2ch.net/test/read.cgi/tech/1404007623/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
0002デフォルトの名無しさん 転載ダメ©2ch.net2014/12/05(金) 12:20:14.04ID:fmzBASgG
【前スレ-2】

JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/
Node.js + Express
http://kanae.2ch.net/test/read.cgi/php/1357402658/
【MVW】AngularJS {{2}}【Google】 [転載禁止]©2ch.net
http://kanae.2ch.net/test/read.cgi/php/1415599223/
enchant.js
http://peace.2ch.net/test/read.cgi/gamedev/1352393326/
むしろjavascriptでゲーム作ろうぜ
http://peace.2ch.net/test/read.cgi/gamedev/1048171505/
0005デフォルトの名無しさん2014/12/05(金) 14:51:01.34ID:v8ZX4BwT
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0007デフォルトの名無しさん2014/12/05(金) 20:48:53.50ID:+TXyzC2W
ここはJavaScript4のスレです

http://ja.wikipedia.org/wiki/ECMAScript#ECMAScript_4

ECMAScript 4

「JavaScript#JavaScript 2.0」も参照
ECMAScript 4 は過去2回仕様作成が挑戦されたが、仕様がまとまらず、失敗に終わっている。
1回目[編集]
2000年〜2003年ごろ行われた。主に、旧Netscape社とMicrosoft社によって行われたが、意見がまとまらずに、打ち切りとなった。この時の案は ActionScript へと引き継がれた。
http://www.mozilla.org/js/language/old-es4/ - 昔のNetscape草案
2回目[編集]
2007年〜2008年ごろ、2回目の仕様作成が行われた。大きく機能を追加される予定であったが、意見がまとまらず、2008年8月13日に、小規模の改善にとどまる、ECMAScript 3.1 を進めることとなった[3]。仕様は、http://www.ecmascript.org/docs.php にて公開されている。
以下のような予定があった。
大規模・大人数開発のための機能の追加[要出典]
型に関する機能の追加[要出典]
ジェネリックプログラミングの機能の追加
ECMAScript 3 が下位互換だが、互換でない仕様が一部に入る[要出典]
ActionScript 3 の上位互換だが、互換でない仕様が一部に入る[要出典]
0008デフォルトの名無しさん2014/12/06(土) 00:47:10.87ID:katyEhxk
いやいやいやいやいやいやいやいやいやいや、

ただのPart 4ですからー残念!
0013デフォルトの名無しさん2015/01/28(水) 16:27:09.57ID:8HD8W7Zv
フェラチオ
0014デフォルトの名無しさん2015/02/11(水) 21:37:34.73ID:z1YCt8TB
http://www.mpi-sws.org/~rossberg/papers/JSExperimentalDirections.pdf

GoogleはJSに「新モードを追加する」という方向性に舵をきり始めた。
GoogleはSaneScript、SaneModeをV8上に今年上半期に実装する。
これはJSの機能を一部制限し、動作を変えることで強力な最適化を可能にする。
語弊を恐れずに言うと、asm.jsの発展版であり、
asm.jsがJSの10%の機能、ユースケースをターゲットにしたものなら、Saneは90%程度だ。

そして今年下半期にはSaneとシンクロする型システムを導入し、SoundScriptとなってharmonyの次の音色をJSにもたらす。
JSは静的&動的型付け、クラス&プロトタイプベース言語となってあらゆる人々の要求に答える言語へと成長する。
それは遠い未来の話ではない。1年の間にその変化が起こるのだ。
0016デフォルトの名無しさん2015/02/11(水) 21:51:27.65ID:nRKk5Oa4
よくわかんないけどウェブプログラマがIEを恨む時代からChromeを恨む時代になる?
0017デフォルトの名無しさん2015/02/11(水) 21:54:42.46ID:z1YCt8TB
違う。これを発表したのはまさにTC39Meetingでだ。
だからGoogleはこれがES7あたりで標準になることを望んでいる。
O.oのときと同じく先行実験をするということ。

しかしJSが徐々に「Living Standerd」化していってるのは否定しない。
これは良い悪いではなく抗えない時代の流れなのだと思う。
そういえばこれと同じようにMozilla陣営が実験を進めていたParallelsは、
共感が少ないということで白紙に戻ったそうだ。

この取り組みが成功し、標準になるかどうかは結局は我々開発者の評判次第ということだ。
0018デフォルトの名無しさん2015/02/11(水) 22:07:33.80ID:z1YCt8TB
皆はasm.jsを手書きで書こうとして詰まったり、思ったよりパフォーマンスが上がらなかったことはないだろうか。
Saneなら違う。SaneはほぼJSの感覚で手で楽にかけるし、パフォーマンスだけでなくリーディングの面でも素晴らしい効果をもたらす。
問題はこのJSにモードを増やすという考え方が、開発者たちにとって歓迎されるかどうかだ。

このasm.jsについてのissueを見てほしい。
https://code.google.com/p/v8/issues/detail?id=2599
10でも多いレス数は80。100で大人気のスター数は630。
当初Googleはasm.js向けの最適化はしないと言っていたのが徐々に主張が変わり、
今では新最適化エンジンで"use asm"を認識し、最適化モードを切り替えられるようにしたほどである。
今回の"use sane"アイディアはこういったことから開発者の受けがいいと判断してのことだろう。
0019デフォルトの名無しさん2015/02/11(水) 22:19:43.31ID:TfFe/slw
asm.jsで目的は達成してるし他にはいらん
しかもasm.jsはソースがグチャグチャになるからアセンブラ並の難読化の役割も果たしてる
分かりやすくして欲しくない
0020デフォルトの名無しさん2015/02/11(水) 23:07:43.53ID:z1YCt8TB
asm.jsはネイティブのコードをJS化するときに活用できるものであって、
"use strict"の強化版的なSaneModeとはユースケースが違う。
特にvarの使用位置にこだわる人やLint勢、クラスベース言語経験者からは喜ばれると思う。
0021デフォルトの名無しさん2015/02/11(水) 23:21:05.94ID:z1YCt8TB
Sane/Soundで一番JSらしくなくなるのはオブジェクトが拡張できなくなる点だが、
sealedされて型のついたオブジェクトというのは、ES7で前々から提案されていたTypedObjectと同じだ。
コンストラクタがデフォルトでTypedObjectを返すようになるモードと考えれば、違和感も薄れるかもしれない。
0022デフォルトの名無しさん2015/02/11(水) 23:31:26.15ID:TfFe/slw
pdf読んだが、ただのstrict modeの拡張レベルの話しだな
SoundScriptの方にいたってはTypeScriptのパクリだし
TypeScriptパクる奴は後を絶たないな
0024デフォルトの名無しさん2015/02/12(木) 04:27:00.28ID:vBHOZlzG
パクリも何もTypedScriptは元々ES6に向けたharmonyの機能を先行して実装し、
それに加えてES4の頃からアイディアがあってES7辺りでの実現が見込まれていた型注釈を組み込んだものだよ。
そしてTypeScriptの目標は自身(型注釈)がES7で取り入れられて最終的に用無しになることだからね。
CoffeeScriptなんかとよく並べられるが、どちらかと言うとtraceurや6to5みたいなトランスレーターの仲間と考えた方がいい。
とは言えTSの型注釈はコンパイル時の整合性チェックのためのもので、実行時に活用するSSとは少し有り様が違う。
0025デフォルトの名無しさん2015/02/12(木) 13:51:21.11ID:sZL3z8VT
>>24
JavaScriptに型注釈が取り入れられるわけないし必要ない
それにブラウザ内蔵オブジェクトに正しく型を付けられるようにしたのはTypedScriptが最初だ
アイディアレベルのものと実際に実用的に動くものにしたのでは天と地ほどの差がある
実行時に活用するのは同じGoogleのAtScriptがあるだろ
0026デフォルトの名無しさん2015/02/12(木) 15:31:26.12ID:vBHOZlzG
>>25
>>型注釈が取り入れられるわけない
そんなことはない
ただし、ESでの型注釈は現状無難なguardの方向になる可能性が一番高い
SSはもっと踏み込んでる

>>ブラウザ内蔵オブジェクトに正しく型を付けられるようにしたの〜
DefinitelyTypedについて言っているのならそれは完全にTSの功績
だがそれはTSの型注釈がコンパイル時の検証のためのものだから必要なのであって
ランタイムのチェックには必要ないもの

>>アイディアレベルのものと実際に実用的に動くものにしたのでは天と地ほどの差がある
別にTSの実装が最初かどうかは論じてない
パクリかどうかについて言ったまでのこと
そういう論展開ならなおさら実装をパクったわけではないからぱっと見似ている機能を入れてもパクリでないということになる

>>AtScript〜
もしguardのことを言っているのであればそれもまたES7アイディアの一つで別軸、別機能、別の話
0027デフォルトの名無しさん2015/02/12(木) 16:52:25.34ID:sZL3z8VT
>>26
> ただし、ESでの型注釈は現状無難なguardの方向になる可能性が一番高い
guardはブレンダン・アイクにいらねー言われてたよ

> DefinitelyTypedについて言っているのならそれは完全にTSの功績
ブラウザ内蔵オブジェクトは単純なclassの定義だけじゃ型付け出来ないものがある
TypeScriptは若干独特な仕様のinterfaceを導入して正しく型付けしている
0028デフォルトの名無しさん2015/02/12(木) 18:47:26.14ID:vBHOZlzG
>>27
guardそのものではないが、実行時の型チェック→エラー機能に留まる≒guardということ。

それと別に型が正しく型付けできない云々はあくまでTSの問題。TSが型をどのように定義し利用してるかの問題であって、一般的な話ではない。
そもそもTSにおける型とは架空のものだから。架空のものなのはJSが曖昧だから。

その点SSはそもそもクラスベースの世界だからインスタンスに紐付けられているクラス情報で判断できる。
で、ビルドインコンストラクタについてはどうやって外部の(プロトタイプベースの)世界と折り合いをつけるのかが示されていないから、
ランタイムチェックについては問題ないがAOT最適化をどうやるのかはなんとも言えない。
0029デフォルトの名無しさん2015/02/13(金) 21:09:48.47ID:WDmbay81
jsonの日
0030デフォルトの名無しさん2015/02/14(土) 03:59:43.76ID:TJAnvvXO
リア充の日
0031デフォルトの名無しさん2015/02/16(月) 00:41:45.50ID:/X+NPUTO
Effective JavaScript読むとJSのきもさに眩暈がするな
元々ガチ向けじゃなかったものをガチ向けにした気持ち悪さ
まるで遊戯王
0032デフォルトの名無しさん2015/02/16(月) 02:39:37.43ID:4iM7fmBu
どんな言語でもプログラムした事無い素人の典型的なレスだな(笑)
0033デフォルトの名無しさん2015/02/16(月) 08:14:21.62ID:1Y+K6fCR
キモイだろ。普通に。
ここまで捏ね繰り回されたコードが普通に使われる言語は珍しい。
他の言語だとそういうキモイコードは、面白いけどさあ、で大体終わる。
0037デフォルトの名無しさん2015/02/16(月) 12:09:44.82ID:G25umMgZ
やべえ、そのくらいじゃ全然キモいって思えねえ
まだobjectiveCのがキモい
0039デフォルトの名無しさん2015/02/16(月) 13:36:48.91ID:8Z58kFg+
>>38
巻き上げの説明でよく出てくる例
var myname = "global";
function func() {
console.log(myname); //出力内容は?
var myname = "local";
console.log(myname); //出力内容は?
}
グローバルと同じ名前のローカル変数を定義してる時点で問題があるが、別の言語だと
"global"
"local"
と出力されるだろうが、そもそもローカル変数にアクセスしようとしてたら
どっちみち意味不明なバグになる
JavaScriptは親切に
undefine
"local"
としてくれるから逆に分かりやすい

セミコロンの問題はわざわざヘンテコな書き方をしない限り誰も問題とは思ってない
しいて上げれば末尾カンマの方が問題だ

ただ全部jshintをすれば事前に分かるから普通に書けば問題にはぶつからない
>>36のイディオムだけは使いまくるからどうにもならんけどな
0040デフォルトの名無しさん2015/02/16(月) 15:23:28.07ID:AmwLqaSG
>>39
C#とかPythonだと上位スコープと同じ名前が後でローカル変数として宣言されるときは、宣言前に使うと構文エラーになって100倍わかりやすいんだが

あと
b = 10
(function(){})()
とかくと10が関数でないってエラーが出るし、関数返したりするとエラーすら出なくなるんだけど、セミコロン省略派の人はjshintで問題を見つけられるの?
0041デフォルトの名無しさん2015/02/16(月) 15:59:58.43ID:8Z58kFg+
>>40
根本的に仕様が違う言語を持ち出すなよ
巻き上げの話しをしてんだから、せめて同名ローカル変数を許す仕様じゃないと比較する意味無いだろ
そんな事言ったら
同名ローカル変数を許す言語<許さない言語という結論で終わる(それには同意する)

jshintのデフォ設定ではセミコロン省略すると大量に警告が出る(>>40で2つ警告が出てる)
> とかくと10が関数でないってエラーが出るし、
エラーになるならそれでいいだろ
> 関数返したりするとエラーすら出なくなるんだけど
どういうコードか分からんかったが、それはエラーじゃないんだろ
0043デフォルトの名無しさん2015/02/16(月) 17:23:39.47ID:AmwLqaSG
同名ローカル変数は許すよ。javascriptで巻き上げてundefinedになる状況がエラーになる。
http://ideone.com/7fi2bK

セミコロンで挙動が変わるのは極端だけどこういうの
function test()
{
・・console.log("A")
・・return function(){
・・・・console.log("B")
・・・・return function(){ console.log("C") }
・・}
}
test() //無=>ABC 有=>AD
(function(){console.log("D")})()

もっと単純でこういうのもあった
var a = [["A","B"],["C","D"]]
[0].map(function(i){ console.log(i);})

あと、即時関数も書いた人の宗教によって
(function(){ console.log("test1"); })();
(function(){ console.log("test2"); }());
+function(){ console.log("test3"); }();
みたいにいろんな呼び方があってキモいじゃん?
想定外の書き方が来ると?になるから、統一してほしい

>>42
boostrapなんかもセミコロン省略教だったりする
上みたいな状況がどうしても出てくるなら、行の先頭にセミコロンつけろだとさ
0044デフォルトの名無しさん2015/02/16(月) 17:32:57.59ID:8Z58kFg+
>>43
> 同名ローカル変数は許すよ。
お前何様だよ

> test() //無=>ABC 有=>AD
残念大間違いw
test() //無=>ABC 有=>ABC
0045デフォルトの名無しさん2015/02/16(月) 17:38:33.32ID:8Z58kFg+
>>44
違ったあってた
そもそも
(function(){console.log("D")})()
↑この書き方がイレギュラーな書き方なんだよ、それは最初に言っている

どんな言語だってコーディングスタイルの違いで変な書き方なんてあって当たり前だ
JavaScriptだけが特別じゃない
0046デフォルトの名無しさん2015/02/16(月) 22:06:33.25ID:AmwLqaSG
>>44
>お前何様だよ
いや、お前が同名ローカル変数を許す言語にしろって言ったんだろ
念のためだが、俺が許すんじゃなくて、(C#やPythonの文法が)許すだからな?

>どんな言語だってコーディングスタイルの違いで変な書き方なんてあって当たり前だ
>JavaScriptだけが特別じゃない
設計じゃなくて文法と仕様が奇怪なのがjavascript
しかも、ときどき理解せずに踏んでしまう可能性がある

どの言語もしない変数の巻き上げ、使い物にならないtypeof、未定義値と限らないundefined、なぜかスコープを作らないブロック、オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動
配列は連想配列のように使えるけどfor inが安全に使えない、lengthが要素数を返さないなどなど、歴史上しょうがないのはわかるが、きもい

funtion(){}()と書けない理由も知らないで使っている人が多そう
別にjavascriptが嫌いなわけではないんだけどな
0047デフォルトの名無しさん2015/02/16(月) 23:08:49.01ID:UGQzThdk
>>46
変数の巻き上げは実際には問題にならないって言ってる(そもそもそのコードがバグってるから)
神経質なやつが騒いでるだけ
> 未定義値と限らないundefined
これは意味が分からん
undefineを代入出来る事が気に入らないのか?
> なぜかスコープを作らないブロック
これは
(function() {
}())
の事でこればっかりはしょうがないと最初に言ってる
> オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動
var o = {};
console.log(o + o); // [object Object][object Object]
そんな事するわけないけど何か問題あるのか?意味が分からん

> 使い物にならないtypeof
これなんか完全に嘘を言って誘導しようとしてるな
普通に使ってるコードを山ほど見るけど、全部バグか?
これで完全に化けの皮が剥がれたな
0048デフォルトの名無しさん2015/02/17(火) 00:44:58.04ID:jqPQ5aJG
>変数の巻き上げは実際には問題にならない
エラーになったほうがバグがすぐわかるじゃん
巻き上げる利点が何もない

>未定義値と限らないundefined
かなり最近まで「undefined = 1;」とかできた。「undefined 判定」とか検索すると苦労の跡が見える。
最近は変更できなくなったが、古いブラウザへの対応と残されたコードを理解するために知る必要がある。
でも、予約語ではないので変数名には使えて
function(){
var undefined = 1;
console.log(0[0] === undefined);
}
とやると0[0]は未定義なのにfalseになる。本来予約語にすべき。

> 使い物にならないtypeof
それはさっきあげたJavaScript Gardenより
http://bonsaiden.github.io/JavaScript-Garden/ja/#types.typeof
唯一有用なundefinedの判定は上に書いたとおり言語の欠陥がなければいらない記法
文句があるならこれ書いた人にpullreqでも送っとけ

>オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動
無論、わざと書くことはない。しかし、変数の中身の型を間違えていたりしても一見正常に動いて、中身が変わるとコケる場合がある。
初心者が===を==と書くともっと不思議な動作をするし、逆にこの手の処理がイディオムなってたりもする
0049デフォルトの名無しさん2015/02/17(火) 00:46:09.01ID:jqPQ5aJG
以下長いが、これ全部結果の型と値わかる?これ全部結果の型と値わかる?
10*[5]
10*["5"]
10+[5]
10*[null]
10*[undefined]
10*[true]
10*[]
10*{}
10*[5,6]
10+true
10-true
10+[true]
Math.min(1,5,null,10);
Math.min(1,5,undefined,10);
Math.min(1,5,[],10);
Math.min(1,5,{},10);
[] === []
!![] === !![]
Nan === NaN
~NaN
-NaN
parseInt(true)
parseInt([])
Number(true)
Number([])
"aa" === new String("aa")
"aa" == new String("aa")
[1,5,10,50].sort()
["aa",NaN,[2],[1],["a"],[NaN],{"0":2},{"0": 1}].sort()
0051デフォルトの名無しさん2015/02/17(火) 01:09:47.26ID:ihqME62s
>>48
> エラーになったほうがバグがすぐわかるじゃん
だからundefinedになるからエラーになるって言ってんじゃん

> かなり最近まで「undefined = 1;」とかできた。「undefined 判定」とか検索すると苦労の跡が見える。
せめて"use strict"での話しをしろよ

> それはさっきあげたJavaScript Gardenより
> http://bonsaiden.github.io/JavaScript-Garden/ja/#types.typeof
糞記事
"foo" String string
1.2 Number number
true Boolean boolean
少なくともこれが分かる時点で使い道はあるし、実際使われている
objectだったらinstanceof使えばいい
それで使いものにならないと言ってたら単なるイチャモン付けてるだけ
はっきり言って、ちゃんとコード書いてたら型判定なんて必要ない事に気づけよ
Booleanクラスが判定出来ないから困っちゃう?ちゃんちゃらおかしいなw
0052デフォルトの名無しさん2015/02/17(火) 01:40:35.02ID:jqPQ5aJG
>だからundefinedになるからエラーになるって言ってんじゃん
その場ですぐエラーになるとは限らない
グローバル変数を使ったつもりで全く別のタイミングで問題が出るかもしれない

>せめて"use strict"での話しをしろよ
してるじゃん。use strictでも予約語にはならないし、古いコード読むときに謎のundefined判定に対する知識が必要
その書き方さえ何パターンもあり、少なくとも美しくはない

>使い道はある
使い道があるかどうかじゃなくて、きもいかどうかのお話をしてる
もっと使い勝手の良くて、Object.prototype.toStringとか不自然なことしなくてすめばいいのに
擬似的なオーバーロードみたいに使い道はあるのに、型よってころころ判定法を変える言語なんてそうないよ
0053デフォルトの名無しさん2015/02/17(火) 02:17:19.61ID:52Ru56el
古いコードでもundefinedに代入するなら代入するなりの理由が無いとやらんと思うぞ
そんなコードはそもそも要注意コードだと思うの
0054デフォルトの名無しさん2015/02/17(火) 08:36:36.32ID:T8d9Ogf5
全体的には ID:jqPQ5aJG に同意

>>48
> var undefined = 1;
これは本当に何とかして欲しい
スコープチェーン上で汚染されるのは ES5 仕様では回避しようがない
現状ではtypeof 演算子なり void 演算子を利用するしか選択肢がないわけだが、ES6 で Keywords に入れてもらえないものかね…
0055デフォルトの名無しさん2015/02/17(火) 08:51:15.40ID:T8d9Ogf5
typeof 演算子の極悪さは Null 型、Object 型の判定にあると思う

typeof null === 'object'; // true
typeof new Function === 'function'; // true
typeof ActiveXObject('Excel.Sheet') === 'unknown'; // true

これらは全て ES5 に準拠しているわけだが、全く信じられない挙動だ
Null 型の判定は === で可能だからまだマシだが、Object 型の判定に Object() を利用しなくちゃならんのが面倒くさい
"type" の名を関する演算子なのに「型」以外の文字列が返すなと問い詰めたい
0057デフォルトの名無しさん2015/02/17(火) 13:50:15.56ID:9i2JMVg5
>>55
なぜtypeofを使うかをちゃんと考えれば困ることはない
お前プログラム組んだこと無いだろ
0058デフォルトの名無しさん2015/02/17(火) 14:14:32.83ID:MalAvpsB
>>56
「する」「しない」の問題じゃない
良いブログラムならそれ以前に「出来ない」
0059デフォルトの名無しさん2015/02/17(火) 18:54:07.52ID:DEFQP+nD
>>57
君は仕様を読んで型の厳密判定をする方法について考えたことがなさそうだな
Object 型に限定した判定法が必要になるケースもある
ES の Native method がそういう設計だし、それに似せると必然的に型判定を厳密にするようになる
0060デフォルトの名無しさん2015/02/17(火) 19:17:26.55ID:9i2JMVg5
>>58
出来ないから何?
やらないものを出来る出来ないなんてどうでもいいし気にもならない
当然キモいなんて全く思わない

>>59
> Object 型に限定した判定法が必要になるケースもある
取り合えず例をあげてよ
0061デフォルトの名無しさん2015/02/17(火) 19:50:13.90ID:jqPQ5aJG
>>60
ローカル変数名にundefinedを使ったコードを読むときに仕様を知らないといけない
var undefined;
とすると、上のスコープと無関係にundefinedを未定義にできる
古いブラウザへの対応も含めてこれを利用したコードが残っている

だから、書き換え可能だった頃の対策コードを含めて、害しかない仕様を詳細に理解せざるを得ない

お前が熟知してても、勉強途中の理解がたりない人に優しい仕様ではないね。エラーにする言語なら間違えようがないところ
0062デフォルトの名無しさん2015/02/17(火) 21:23:01.60ID:DEFQP+nD
var undefined; については他の定数と比較すれば違いがよくわかる

(function () {
var true = 1; // SyntaxError: Unexpected token true
var false = 1; // SyntaxError: Unexpected token false
var null = 1; // SyntaxError: Unexpected token null
var undefined = 1;
}());

true, false, null で変数宣言が出来るケースを考えてみるといい
ちなみに、null が書き換えられた場合は undefined の比でなく面倒になる
null は typeof 演算子の仕様バグがあるから固定値を取り出すには必ず、null を返すが決まっている関数or演算子を使うしかない
undefined と違って null には void 演算子のような便利な機能は用意されていないのでスコープチェーン上で
var null = /./.exec('');
を宣言するぐらいか
0063デフォルトの名無しさん2015/02/17(火) 21:33:15.87ID:igbT8vqk
prototypeのおいしい使い方ってないかな
継承とか考えずにデコレータやアダプタとしてラップする方が便利かも
0065デフォルトの名無しさん2015/02/17(火) 22:35:27.98ID:DEFQP+nD
>>60
・{hoge: true, foo: false} のように Object 型でオプションを指定したい場合
・配列のようなオブジェクト(NodeList等)を判定したい場合
0066デフォルトの名無しさん2015/02/17(火) 23:45:34.81ID:DEFQP+nD
>>64
var undefined; を宣言した場合、ES5 で書き換え不可能になった window.undefined をスコープチェーン上で参照不可能になり、書き換え可能なローカル変数として扱われる
書き換え不可能だった定数が書き換え可能な変数に置き換わるのは良いコードとはいえない
0067デフォルトの名無しさん2015/02/18(水) 06:15:00.64ID:VrkW+sKk
>>66
もちろん悪いコードだと思う
でも敢えてそんな記述をする以上は、そいつをundefinedとして扱えってコードなのだろう
そんなコードを意識してわざわざ変な判定をするのは却っておかしなことになるんじゃ?と言いたい
0068662015/02/18(水) 08:03:14.70ID:fF9sUQWk
>>67
それは確かにそうだな
もっと他によい方法があると思う
- written: true の時だけ defineProperty を使う
- typeof undefined !== 'undefined' の時だけ this.undefined = void 0;
- undefined を使わず、typeof 演算子を使う
自分は>>61ではないので>>61の回答待ち
0069612015/02/18(水) 09:30:11.66ID:86t2mSil
これから書くときはほとんど気にする必要はない
不便なのは、初心者が人のコードを読むとき
・undefinedがキーワードでないこと
・過去にグローバルオブジェクトが書き換え可能だったこと
・「未定義値であることを保証する」というパターン(イディオム)数種類
を知らないと、そのパターンを見た時にすぐには理解できなくて手が止まってしまう
当然調べてundefinedの仕様を学べばいいんだけど、undefinedが最初から予約語ならそもそもこんなこと考える必要も、知る必要もなかったのにね、ということ

実際、jQueryとかでもほんの最近まで
(function(window,undefined){ 中身 })(window)
としてundefinedを上書きしてたし、プラグインとかではまだこの書き方が残ってるやつはかなりある
0070デフォルトの名無しさん2015/02/18(水) 14:03:10.51ID:SiK8hGV0
>>69
> これから書くときはほとんど気にする必要はない
IE7 はまだサポート期間が残っているので「気にする必要はない」は語弊があるのでは?
0072デフォルトの名無しさん2015/02/18(水) 17:28:09.82ID:yNLF/Zre
>>65
> ・{hoge: true, foo: false} のように Object 型でオプションを指定したい場合
直感的に思いついた通りに実装すればいいだろ
function test(hoge, foo) {
'use strict';
if (typeof hoge === 'boolean') {
console.log('hoge is', hoge);
} else if (typeof hoge === 'object') {
if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') {
console.log('hoge is', hoge.hoge);
}
if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') {
console.log('foo is', hoge.foo);
}
}
}
test(true, false);
test({hoge: true, foo: false});
test({hoge: 2});
test({hage: 2});

> ・配列のようなオブジェクト(NodeList等)を判定したい場合
「ような」なんだから
if (hoge.length > 0) {
// 配列の「ような」オブジェクト
}
で問題ないだろ
0075デフォルトの名無しさん2015/02/18(水) 21:00:07.21ID:lIxPY8wl
>>74
特定の Object 型に制限する理由は全くない
それから Null 型が考慮されてない
配列も型判定がないからプロパティアクセス演算子でTypeErrorになる場合がある
ECMAScript でコードを書いた経験が少ないとしか思えないレベルだ
0076デフォルトの名無しさん2015/02/18(水) 22:43:31.46ID:M4E75IrS
>>75
null(undefined)チェックを忘れた…
function test(hoge, foo) {
'use strict';
if (!hoge) return;
if (typeof hoge === 'boolean') {
console.log('hoge is', hoge);
} else if (typeof hoge === 'object') {
if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') {
console.log('hoge is', hoge.hoge);
}
if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') {
console.log('foo is', hoge.foo);
}
}
}
test(true, false);
test({hoge: true, foo: false});
test({hoge: 2});
test({hage: 2});
test(null);
test(undefined);
test([]);
test({hoge:[]});

単にnullチェック抜けてるって言えば済む問題を○型が考慮されてないとか
お前の方が素人丸出しだ
0077デフォルトの名無しさん2015/02/18(水) 22:53:00.36ID:M4E75IrS
>>75
こっちもだった
if (hoge && hoge.length > 0) {
console.log('配列の「ような」オブジェクト', hoge[0]);
}
↓これらで問題無し
var hoge = null;
var hoge = undefined;
var hoge = [];
var hoge = {};
var hoge = {hoge:1};
var hoge = 1;
var hoge = "a";
0078デフォルトの名無しさん2015/02/18(水) 23:37:18.13ID:86t2mSil
>>65 はそもそも何を持って配列のようなオブジェクトといいたいのだろう
さすがに{length:10}を配列のようなものとは呼びたくないけど
0079デフォルトの名無しさん2015/02/18(水) 23:52:45.07ID:86t2mSil
>>76
これそもそも第2引数は一度も使ってないけど、何のためにあんの?

あと、
if (!hoge) return;
追加したら
test(false,false);
の時の挙動変わってんじゃん
0080デフォルトの名無しさん2015/02/18(水) 23:55:34.69ID:M4E75IrS
>>78
いや{length:10}de配列ライクと言えると思われる
var hoge = {length: 10};
for (var i = 0; i < hoge.length; ++i) {
console.log(hoge[i]);
}
で全部undefinedが出力されるけど、それは普通の配列でも有り得る事だし
var hogeArray = Array.prototype.slice.call(hoge);
で配列に変換も出来る
0081デフォルトの名無しさん2015/02/19(木) 00:01:52.76ID:4zgsUurY
>>79
直した…スマソ
function test(hoge, foo) {
'use strict';
if (typeof hoge === 'boolean') {
console.log('hoge is', hoge);
} else if (hoge && typeof hoge === 'object') {
if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') {
console.log('hoge is', hoge.hoge);
}
if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') {
console.log('foo is', hoge.foo);
}
}
}
0082デフォルトの名無しさん2015/02/19(木) 00:46:16.03ID:+Jg4S+WS
>>80
JavaScript難しいなぁ
Array.prototype.slice.call(hoge);
ってするときに
hoge = {length:4.5} => 4コ
hoge = {length:Infinity} => 0コ
hoge = {length:99999999999 } => フリーズ
hoge = {length:-0.1} => 0コ
hoge = {length:-1} => フリーズ
hoge = {length:NaN} => 0コ
hoge = {length:true} => 1コ
うーむ・・・
でかいのはまだしも、負数を渡すとフリーズするのは内部で何をしているんだろう
0083デフォルトの名無しさん2015/02/19(木) 01:00:49.63ID:4zgsUurY
>>82
sliceがマイナスの値は最後から処理するからな気がする
lengthがマイナスなのは配列とは言えないから
やっぱり
if (hoge && hoge.length > 0) {
var hogeArray = Array.prototype.slice.call(hoge);
}
ってのは必要だね
0084デフォルトの名無しさん2015/02/19(木) 01:35:12.55ID:iPujbk1h
>>83
必要かどうかは仕様による。

>>83のコードが必要な理由は、lengthにマイナスが入ることが
プログラムの仕様的にありえるから、必要なのだろう?

lengthにマイナスが入った時どうするか?
例外を出すか、永遠と処理するか、hogeArrayをundefinedにするか。
それは仕様で決めること。

そのコードはhoge.lengthがマイナスの場合、hogeArrayは
undefinedになるという仕様のコード。
それの仕様でいいのかどうかを考える必要がある。
0085デフォルトの名無しさん2015/02/19(木) 08:45:08.63ID:ACeVxkIV
>>76
> 単にnullチェック抜けてるって言えば済む問題を○型が考慮されてないとか
> お前の方が素人丸出しだ
そのコードは typeof 演算子の "Object (native and does not implement [[Call]])" しか対応できてないだろう?
http://es5.github.io/#x11.4.3
前方互換性をふまえれば、ES6 でも正しく判定出来ることが望ましい
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-typeof-operator
Null 型を誤検知するだけなら「Object 型の一部」とはいわない
あなたは ECMAScript 仕様書をまともに読んだことがないだろう?
ES 仕様に言及している意見に反論するなら仕様書ぐらい読んで欲しい

>>78
> >>65 はそもそも何を持って配列のようなオブジェクトといいたいのだろう
わかりやすくいうならば、 Array.prototype.forEach と同様の判定といえるかな
Array.prototype.forEach では ToObject, ToInt32 で型変換しているわけだが、型変換せずに TypeError を返したい状況もあるだろう
http://es5.github.io/#x15.4.4.18
0086デフォルトの名無しさん2015/02/19(木) 12:11:41.51ID:k55gX30E
>>85
> そのコードは typeof 演算子の "Object (native and does not implement [[Call]])" しか対応できてないだろう?
それで事足りてるという事は仕様的に問題ないという事だ
対応できてない事で実用的に問題があるコード例を挙げて説明してくれ

そもそもJavaScriptは
var obj0 = {hoge:true, foo:false};
var obj1 = {foo:false, bar:1, hoge:true};
function Hoge() {this.hoge = true; this.foo = false;}
var obj2 = new Hoge();
のどれを渡されても同じように機能する事が期待されている
!obj(nullとundefinedのチェック)とプロパティーの存在チェック(と最終的に'number'などの型チェック)以外に必要だとは思えない
0087デフォルトの名無しさん2015/02/19(木) 13:17:52.04ID:VHEGaKii
実際、>>72が直感的にコードを書いて多数間違えたぐらいだからなあ
rypeof演算子に関しては良い仕様とは言い難い
0088デフォルトの名無しさん2015/02/19(木) 15:27:06.03ID:/+bx2aTM
なにがArrayLikeかは難しいよ。どういう目的で区別するかで変わると思う。なぜなら何を配列と見立てられるかは用途によって変わるから。
例えば配列に変換したいという場合なら、ES6のArray.fromを参考にすると、
lengthを持っているか(オブジェクトでなくともラッパーのプロトタイプにあればいい)、イテラブルならOK。
これが広義のArrayLikeだろう。

またはArray.prototype.concatで、引数をSpreadすべきかどうかなら、実は配列かどうかというチェックだと問題がある。
だからES6からは@@isConcatSpreadableのチェックに変わった。
要するに「一般的なArrayLikeの判定」を定義するのは無理というか、しても役に立つものにならないと思う。
0090デフォルトの名無しさん2015/02/19(木) 19:11:01.43ID:FI1nksg/
>>88
> ES6のArray.fromを参考にすると、lengthを持っているか(オブジェクトでなくともラッパーのプロトタイプにあればいい)、イテラブルならOK。
Array.from は配列に変換する、つまり Object 型に変換するから変換元が Object 型であることを求めないだけな気がする
ierator を除くと Array.from は ToObject, ToLength(Int32への変換)をしている
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from
変換後のオブジェクトが ArrayLike と考えられるので ArrayLike は「Object 型」「Int32のlengthプロパティを持つ」になる
Array.from の挙動は>>85で説明されている Array.prototype.forEach の挙動と一致する
Array.prototype 系メソッドを一通り読めばわかると思うけど、全てそういう挙動になってるよ
対象を isArrayLike で判定して例外を返すか、ArrayLike に変換するか、は意見が別れる(ポリシーに依る)だろうけどね
ES6 の挙動に合わせるなら変換する方になる
0091デフォルトの名無しさん2015/02/19(木) 21:45:10.46ID:/+bx2aTM
ToObjectがかかっているのは、null/undefinedはじきや、Getやらもろもろの処理がObjectであることを期待しているためだからであって、処理の本質とはあまり関係ないけどね。
あとToLengthはInt32でなく2^53-1までの整数。
長さを拡張すべきという問題が出て、Arrayに関しては互換性問題で見送られたけど、型付配列は長さ2^53-1までになったから、ここに関しても絶対基準はないと思う。
別にこの範囲でなくともエラーになるわけではなくて、範囲に収まるように強制されるだけだし。
0092デフォルトの名無しさん2015/02/19(木) 22:21:02.70ID:cTS5FQ8e
>>91
なるほど
ES6 の Array.prototype.forEach の length も 2^53-1 に拡張されてるんだな
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.prototype.foreach
今後、更に拡張される可能性を考えると、length に関しては Number.isInteger の判定ぐらいでいいのかもしれないな
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isinteger
0093デフォルトの名無しさん2015/02/23(月) 05:03:25.31ID:m2dP1v8u
別に整数かどうかの判定は要らないだろう。
「"5"」だったら「5」、「true」だったら「1」になるのがJS流だし。
整数の長さが欲しければ「len = obj.length|0」とするのがJS流。
0094デフォルトの名無しさん2015/02/24(火) 00:54:33.32ID:XD7S4Fuq
try catchって頻繁に呼び出す関数では最適化できなくて遅くなるから使っちゃいけないのか?

知らなかった…Chromeのプロファイラに出ていた警告を見て初めて知った
0095デフォルトの名無しさん2015/02/24(火) 11:35:35.42ID:SsySdaPd
>>94
ループで、独自につくったルーチンなどを頻繁にそれつかって回すと激遅になる
ので、なるべく、どこかで検証用の別ルーチンで対処させるようにしてる。
0096デフォルトの名無しさん2015/02/24(火) 12:16:53.92ID:lFZ8d0+y
関数全体を覆わなければ問題ない。
一番ベストな使い方は関数呼び出しの部分だけに使用する。
try{ func() }
そうでなくても全体で使用しなければ、tryの掛かっていない部分はfor文等一定のブロックごとに最適化が働く。
0097デフォルトの名無しさん2015/02/24(火) 12:32:14.82ID:6vv1mCHr
>>94
try catchの使い方を間違えてるんでしょ。

try catchを正しく使うということは
try catchを使わないことを意味するw

何を行っているかわからないと思うが、
基本的に、windowのerrorイベントを使えばいいんだよ。
errorイベントは、誰もcatchしない時に呼ばれる所。
ここでまとめて処理すればいいし、普通はここで処理するもの。

例外的に途中でcatchしなくちゃいけない時だけcatchをする。
だからtry catchを正しく使う = try catchを使わないということになる。

逆に間違った使い方をしていると、catchしてalert()とかreturn falseとかするから、
間違った使い方 = try catchが多くなる。
0098デフォルトの名無しさん2015/02/24(火) 12:48:11.36ID:wY5F80Ar
>>94
try-catch は例外を捕捉しなければエラー処理出来ない場合に使うもの
例外が発生する条件は確定しているのだから、 try-catch を使わなくても対応出来る場合が大半を占める
try-catch を使うのは new ActiveXObject() で対応する引数に応じて処理を分ける等の例外的なケースに限られる
0099デフォルトの名無しさん2015/02/24(火) 16:54:22.71ID:gLNZIunY
netbeansを使ってるんだけど最初にテンプレが出ますよね?あれを編集する方法ないですか?
0105デフォルトの名無しさん2015/04/12(日) 11:08:10.55ID:7j69OB5F
『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』
http://www.amazon.co.jp/dp/4798043761/

せっかくだからJavaScriptで関数型プログラミングを学んでみるのも面白いかもしれないな。
0106デフォルトの名無しさん2015/04/12(日) 17:02:14.80ID:PVRHL1t5
>>105
Qiitaアカバンされたポエマー、毛の壁先生じゃんw
0107デフォルトの名無しさん2015/05/18(月) 15:33:55.56ID:lIw4CyOJ
JavaScriptが20周年。開発者のBrendan Eich氏が過去と未来についてのスライドを公開
ttp://www.publickey1.jp/blog/15/javascript20brendan_eich.html
0109デフォルトの名無しさん2015/05/20(水) 01:48:48.87ID:zDiYcCDM
言語としてはかなりシンプルだったからな。
LexとYacc使っただろうし、スタックマシンな
バイトコードインタープリタはSchemeのインタープリタを
Cで書いたことがあれば難しくない。

コードを10日で書いたからクソというよりは、
書く前に言語仕様をきちんと練らなかったからクソなんだろう。
0110デフォルトの名無しさん2015/05/20(水) 05:27:02.66ID:iajmjkjM
10日で書いたにしては良くできてるけど、もともとVBAみたいなものなのに、
後からいろいろ理屈を考えて素晴らしいものみたいに言いくるめようと
したのがいけなかったんじゃないの。

アプリに付属させるマクロだと思えば、納得の仕様だと思うけど。
元々そういうものなんだし。
0113デフォルトの名無しさん2015/05/20(水) 12:18:11.33ID:qzEPJuIN
誰でも10日で出来る作業なら
クソだろうさw

10日でとても出来ないような作業を
10日で作ったのならば、それは優秀ってことだよ。

優秀な人が作ったのだから、とても良く出来ている。
0116デフォルトの名無しさん2015/05/23(土) 05:06:34.47ID:aWFfanUl
jsスレでdisるのもアレだけど
権威主義以外の何物でもない

10日で作ったのは凄いかもしれんが別に洗練されてもないしシンプルでもない
初期のjsって文字列演算、暗黙変換とか無駄に長いfunctionとか、
中途半端にvbやC++の真似もしてて、バージョン違いの挙動もあって普通にクソ
初期のを優秀とか言う奴はES6使わないで欲しい

本人はサブセット言語嫌いとかlisp嫌いとか好き勝手言ってるみたいだけど
素直にパクリ元のselfのサブセットを素直に実装すりゃよかったと思うわ
0117デフォルトの名無しさん2015/05/23(土) 08:57:54.91ID:3bf42BAL
だいたい名前からしてクソだよ。
全然関係無いJavaパクってるんだし。
0120デフォルトの名無しさん2015/05/24(日) 13:15:55.75ID:bCeKXRbu
>>119
じゃあどこが権威主義なのか
噛み砕いて説明してください。

その前に前提として権威主義とは何かを書いておきますね。

http://ja.wikipedia.org/wiki/%E6%A8%A9%E5%A8%81%E4%B8%BB%E7%BE%A9
> 権威主義(けんいしゅぎ)とは、権威に服従するという個人や社会組織の姿勢、思想、体制である[1][2]。権威主義の反対は個人主義や民主主義である。
> 政治学上の用法では、権威主義体制とは非民主的な体制の総称であり、通常は独裁、
> 専制、全体主義などを含むが、権威主義体制を民主主義体制と全体主義体制の中間とする立場もある[5][6]。

http://d.hatena.ne.jp/keyword/%B8%A2%B0%D2%BC%E7%B5%C1
> 権威(人を服従、強制させる力)に価値をおき、それに対して自己卑下や盲目的服従をする態度のこと。
> また逆に人にそれを要求する態度のこと。心理学的には、権威や伝統、社会的に価値のあると
> されているものを無批判に承認し、これに服従、依存し、融通が利かないパーソナリティを指す。
0121デフォルトの名無しさん2015/05/24(日) 15:11:00.39ID:9Q9ph3Hr
オリジナルがえらいのではなくて
パクリ損ないでオリジナルより劣化してるのがクソ、
っていう単純な話だと思うのだが……
0122デフォルトの名無しさん2015/05/24(日) 18:48:24.27ID:hZNW9MV5
>>120
10日で作業したというだけで優秀として
優秀な人、その人が作ったからスバラシイ

全然中身に言及してねえじゃんw
どこに権威主義以外の要素があるんだよw
0127デフォルトの名無しさん2015/05/25(月) 21:28:29.13ID:Pr0+1HdK
流石に初期JSの規模で大変とか言ってるのは
インタプリタの作り方もわからない初心者だけだよな?

クソ言語でも普及したPHPと違って言語そのものの需要で使われたわけでもなし
JSが普及したのはウェブブラウザが先進的だったから

そもそも本人も公開してるのに何マンセーしてんだかw
0129デフォルトの名無しさん2015/05/26(火) 00:12:46.62ID:xYtlptqc
>>127
オレもそう思うんだけどねえ。
Schemeのインタープリタ書いたことがあればさまえ難しくはない。
0131デフォルトの名無しさん2015/05/26(火) 18:58:13.73ID:CP1OCp5D
JavaScriptライブラリのスレにも書いたのですが,過疎っていたのでこちらで質問させてください
openlayers3についてです

http://openlayers.org/en/v3.5.0/examples/kml-timezones.htmlをそのままコピーして
ローカルで実行したのですが,サンプルのようにTimezonesが表示されません(地図は表示されます)
kmlファイルはhttps://github.com/openlayers/ol3にあるdataフォルダをhtmlと同じ階層に設置しました
他のkmlファイルを読み込むサンプルも同様に動かないのですが何が原因でしょうか
0135デフォルトの名無しさん2015/05/28(木) 13:22:35.68ID:E8n2j0BJ
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'timezones.kml',//url: 'data/kml/timezones.kml',
0137デフォルトの名無しさん2015/05/28(木) 19:02:19.37ID:V96RG34r
>>135
>>136
ありがとうございます
IE,Opera,Chromeだと動かないのですが,firefoxだとサンプル通り動きました
これってコードにブラウザ依存の部分があるのでしょうか?
それともブラウザの設定の問題でしょうか?
0139デフォルトの名無しさん2015/05/30(土) 07:45:51.67ID:xVK15s94
ローカルテストはサーバ立ててやるものだと思うが、fileスキームで実行してるのか
0141デフォルトの名無しさん2015/05/30(土) 10:26:22.21ID:3Gf/DalK
最近やたらめったらモジュールに切り分けてたら共通部分の重複が酷いことになってた
現在のスコープ内にimport,requireできれば便利なんだが
0142デフォルトの名無しさん2015/05/30(土) 12:21:21.30ID:skc6DNlZ
現時点でもやはりES3で書くべきですか?
ES5出てからもう何年も経ってるしObject.create()とか配列まわりの関数とか色々追加されてるのに使えないのが歯がゆいです。
ネット見てると結構ES5の機能使ってる人が多いですが、そういう方々はIE8とか切り捨ててるんですかね?
0143デフォルトの名無しさん2015/05/30(土) 13:40:15.04ID:HkfQYaI5
>>142
サポートサイクルを見たらどうでしょう?
2016年1月まではIE8対応は切れません。
0145デフォルトの名無しさん2015/05/30(土) 14:06:06.57ID:ebcCMrL3
>>142
lodash使ってる。なんとIE6以上から対応してる。

実装不可能なものを除いて、ES5で提供されている関数が提供されてる。
Object.create相当のメソッドもある。
https://lodash.com/docs#create

どうしてもES5だけでやりたいってわけじゃなく
ES5で提供された便利な関数を使いたいならlodashオススメ。
lodashにはES5よりも多くの機能が追加されてる。
0146デフォルトの名無しさん2015/05/31(日) 02:38:34.37ID:474JDHci
>>143
ありがとうございます。
ぐぐってみたら2016年1月以降は最新版のIEしかサポートされないんですね。
こういうのを境界にして考えるのですね。勉強になりました。
polyfillというのはes-shimsとかのことですよね?Object.createに対応してないので選択肢から外れました。

>>145
ありがとうございます。今回は素のJSでやりたかったのでlodashは使えません><
0147デフォルトの名無しさん2015/05/31(日) 02:41:25.56ID:474JDHci
でももうすぐES6が出るしキリが無いですね
ブラウザ対応状況とか考えるの諦めてlodashとかunderscoreとかそういうのに完全依存する方が正しいのかも
0148デフォルトの名無しさん2015/05/31(日) 08:20:05.87ID:6IDXNIVy
>>146-147
Object.create はES3の範囲内で完全実装は出来ない為、制限付きを理解した上で polyfill を書く必要がある
lodash は forEach 等で ES5 互換でないコードが見受けられるので ES 標準を目指すのであればお勧めしない
コードを読む限りでは 仕様に忠実なライブラリではなく、独自の世界を構築するタイプのようだから
0149デフォルトの名無しさん2015/06/01(月) 15:26:03.49ID:dTiEpsP/
underscoreって可読性低下しない?
_から始まるってのがそもそも論外なんだけど…
知らない人間が見たら何だコリャ?ふざけてんのか?
これを考えた奴は保守性を考慮しないオナニー馬鹿なのか?って思うだろ。
0150デフォルトの名無しさん2015/06/01(月) 16:19:05.72ID:fqMWxMza
>>149
ま、普通使わない。
オナニーって言えばその通り。少なくとも個人的に使うのだったら文句言う
アレはないが、プロジェクトなんかでこんなもの使ってる奴いたら、排除する。
0151デフォルトの名無しさん2015/06/01(月) 16:49:15.47ID:4t8ilUI7
>>149
> 知らない人間が見たら何だコリャ?ふざけてんのか?
それを言い始めたら、$.hogeってなんだ?ってことにもなる。

>>150
> ま、普通使わない。
以外と使われてるよ?

http://www.infoq.com/jp/news/2015/04/lodash-utility-library
> JavaScriptユーティリティライブラリのlodashがバージョン3.5に達して,npmパッケージリポジトリの中で
> 最も多く参照されるライブラリになった。もはや代用品などではなく,信頼できる選択肢のひとつだ。

http://matsukaz.hatenablog.com/entry/2014/04/09/082410 に上げられてるようなよく使う機能は、
オレオレ実装されるより、既知のライブラリのメソッド使って欲しい。
0152デフォルトの名無しさん2015/06/01(月) 17:05:38.13ID:dTiEpsP/
javascript使いってエンジニアとして未成熟なのか文系が多いのか、
保守性を考慮しないのばっかりだよな。
多言語では保守性において禁忌とされている事を平気でやる
先人が築きあげたバグを排除するコツのようなものをを完全に無視してる
たぶん将来はjavascriptの仕様が整理されて、
jQueryとかunderscoreみたいな非直観的で腐ったキーワードを使うライブラリは完全非推奨になる。
0155デフォルトの名無しさん2015/06/01(月) 19:51:34.16ID:lFnhdSIE
>>152
だってJataScriptが使いにくいクソ言語じゃん。
細かいこと気にしてられないって、クソだから。
0156デフォルトの名無しさん2015/06/01(月) 19:59:11.62ID:9HWSCI34
>>152
こういう関数の部分の保守性とかどうでもいいよw
単純に自分実装のライブラリに入れ替えれば済む話なんだから。

それより問題なのはフレームワークだ。
馬鹿が使うとフレームワークにガッチリ組み込まれて
別のものに変えるのがすごく大変になる。
0157デフォルトの名無しさん2015/06/01(月) 20:00:16.98ID:9HWSCI34
>>151
> > ま、普通使わない。
> 以外と使われてるよ?

だよな。Node関連では一番使われているライブラリだったはず。
何処かにデータが有ったはずなんだが。

好き嫌いは個人の好みとして、一番使われているという
事実を知らないとしたら、モグリだろうw
0158デフォルトの名無しさん2015/06/01(月) 20:02:41.82ID:9HWSCI34
あったあった。この記事だ。

lodash, あなたが既に使っているJavaScriptライブラリ
http://www.infoq.com/jp/news/2015/04/lodash-utility-library

JavaScriptユーティリティライブラリのlodashがバージョン3.5に達して,
npmパッケージリポジトリの中で最も多く参照されるライブラリになった。
もはや代用品などではなく,信頼できる選択肢のひとつだ。


何の根拠もない「使われてない」は無視していいよ。
だって、本人が無知だから、使われていることを「知らない」という
状態でも、自分の知ってる小さな経験だけから
使われてないって発言するだろうからさw
0159デフォルトの名無しさん2015/06/01(月) 20:33:19.40ID:qMAgmJxR
そんなことよりもNode.jsのREPLでアンダースコアが使えないのはどうすればいいの?

REPL単体で使うぶんには別の名前を使っても気にならないけど、.loadで読み込むファイルでアンダースコアが
使われていた場合は、ファイルを書き換えなければならず、かなり気持ちが悪い

こんな定番のライブラリで、Node.jsのことを考慮していない名前をデフォルトにするとも思えないから、
何か解決策はあると思うんだけど…
0161デフォルトの名無しさん2015/06/01(月) 20:49:28.66ID:9HWSCI34
>>159
グローバル変数とローカル変数の違いわかってる?

REPLで使うのはグローバル変数の_。
ローカル変数の_(lodash)が名前かぶっても
何の問題もないんだが。

名前かぶってわかりづらいというのなら、
var i だってずいぶん被ってるはずなんだが。
0162デフォルトの名無しさん2015/06/01(月) 20:52:38.62ID:9HWSCI34
>>160
いやー、普通、_で思い出すのは、
C言語などで広く使われてる多言語の仕組みである
GetTextの_関数でしょw

あれだって、_で始まる関数なわけだけど、
何だこりゃの前に、普通GetText思い出すよね?

>>149は無知なんじゃないかって思うだけなんだが。
0163デフォルトの名無しさん2015/06/01(月) 21:51:26.69ID:dTiEpsP/
>>162
_で始まるって言い方はおかしかったな。
C言語系の_は名前が続くから識別に問題ないが、_だけというのがクソだって話
これを初めて拝んだとき、_だけを変数名にするなんて一体このバカはどんな教育を受けているんだと思ったわ。
0165デフォルトの名無しさん2015/06/01(月) 22:56:29.23ID:qMAgmJxR
>>161
流石にそれくらいは分かってるけど、UnderscoreやLodashは普通グローバルに読み込むものじゃないの?
まさか関数ごとにrequireを書くわけでもあるまいし、少なくともvar iとは次元が違うものだと分かると思うんだけど…
0166デフォルトの名無しさん2015/06/01(月) 22:59:26.58ID:VQX8/s75
lodash使うアプリでグローバルなんて聞いたことがない。

普通nodeでライブラリを使うときは、
ローカル変数に、略

いわんでもわかるだろ?
知ってるならなw
0167デフォルトの名無しさん2015/06/01(月) 23:00:05.05ID:VQX8/s75
訂正

lodash使うアプリでグローバルなんて聞いたことがない。
node使うアプリでグローバル変数なんて聞いたことがない。
0168デフォルトの名無しさん2015/06/01(月) 23:01:04.60ID:e+Q3qVuq
CakePHPなんかの__()ならともかく、underscore.jsでGetTextの方の_を、
どうすれば連想できるのかわからない
0169デフォルトの名無しさん2015/06/01(月) 23:01:38.04ID:dTiEpsP/
>>164
そんなどうでもいい知識はどうでもいい
0170デフォルトの名無しさん2015/06/01(月) 23:03:51.00ID:dTiEpsP/
_を変数名にするのはゴミだってのは100人に聞いて99人が納得する話。
ほんとjQueryといい、javascriptのライブラリ作ってる奴は基地外だわ。
0171デフォルトの名無しさん2015/06/01(月) 23:06:02.95ID:qMAgmJxR
>> 166,167
何が言いたいのか分からんのだけど、ファイルの頭で
var _ = require('lodash'); // またはunderscore
とするのは十分、一般的な使い方じゃないか?

適当に検索したサンプルコードでも、ファイルの頭でrequireをしているものがほとんどだし
0173デフォルトの名無しさん2015/06/01(月) 23:08:27.29ID:VQX8/s75
>>171
はい、だからファイルの頭で
var _ = require('lodash'); // またはunderscore
とローカル変数に代入してるって言ってるわけですが。
0174デフォルトの名無しさん2015/06/01(月) 23:12:31.08ID:qMAgmJxR
>>173
それで>>159に戻るんだが、そのファイルをREPLから.loadで読み込むと名前が衝突して困るという話なんだが
何かおかしいこと言ってるかな?
0175デフォルトの名無しさん2015/06/01(月) 23:16:47.51ID:VQX8/s75
>>174
それは作り方が悪いだけだろう。
自分で作ったものを自分でロードして
問題が起きたって騒いでいるだけ。
0178デフォルトの名無しさん2015/06/01(月) 23:20:50.21ID:qMAgmJxR
>>175
だから、どのように作り方が悪いのかを>>159で聞いているわけ

>>176
何故qiitaが出てくるの?


なんか話が通じない人多すぎ…
0180デフォルトの名無しさん2015/06/01(月) 23:21:19.02ID:dTiEpsP/
>>172
underscoreというものの存在を知ってる人間じゃないと、おふざけか本気なのか理解不能
知らない人でも直観的にわかるようにするべき。
_.なんていかにも意味ありげに書かれてたら、知らない人間はjavascriptに新しい構文でも出来たのかと勘違いする。
0182デフォルトの名無しさん2015/06/01(月) 23:23:01.97ID:VQX8/s75
>>178
> だから、どのように作り方が悪いのかを>>159で聞いているわけ

簡単な話。

.loadでAというファイルとBというファイルの
二つを読み込んだ時を考えればいい。

同じ変数を使っていれば、混乱が起きる。
だから.loadなんかを使っては駄目だ。

REPLはAというファイルの前に
別のファイルを読み込んでいると考えればいい。

nodeの標準に合わせてrequireで読み込め。
.loadは簡易なツールにすぎない。
0185デフォルトの名無しさん2015/06/01(月) 23:29:50.29ID:qMAgmJxR
>>182

> .loadでAというファイルとBというファイルの
> 二つを読み込んだ時を考えればいい。
これに関しては自分の場合は混乱が起きたことは無いな
REPLで必要になるのは常に新しくロードされたものだから

> nodeの標準に合わせてrequireで読み込め。
.> loadは簡易なツールにすぎない。
その簡易なツールとしての使い方を聞いたつもりだが、まぁうまい方法は無いってことで
答えてくれたことは感謝するよ、ありがとう
0186デフォルトの名無しさん2015/06/02(火) 07:22:03.36ID:ex2Jk34L
>>183-184
こんな記述を許すなんて、webプログラマはどうかしてるわ
C++等の堅牢な言語が理解できないからスクリプトに逃げたってのもあるのかねぇ
0187デフォルトの名無しさん2015/06/02(火) 07:56:44.99ID:ex2Jk34L
javascriptって手作業感のあるかなりアナログな言語だよな。
コンパイルすれば型間違いやスペルミスを全部チェックしてくれるC++の方が楽だわ。
0188デフォルトの名無しさん2015/06/02(火) 08:03:09.37ID:rgUwgwJK
デフォルトで存在しなければならないような機能の構文は
可能な限り軽くしたい、というだけの話なのだが、
まあ、キチガイみたいだし、相手にする必要もなさそう。
0189デフォルトの名無しさん2015/06/02(火) 08:07:16.76ID:rgUwgwJK
>>187
>コンパイルすれば型間違いやスペルミスを全部チェックしてくれるC++の方が楽だわ。

静的検査なのに型安全じゃないクソみたいな型システム自慢されても……
0191デフォルトの名無しさん2015/06/02(火) 11:02:57.63ID:fIlyBYj2
>C++等の堅牢な言語が理解できないからスクリプトに逃げたってのもあるのかねぇ

ここ笑うところでOK?
0194デフォルトの名無しさん2015/06/02(火) 12:47:31.17ID:qfQ5Cs59
スクリプト言語なら_とかもありだと思うよ
直感的に理解不能なのはむしろC言語のテクニカルすぎるポインタ操作とか、処理系依存処理
0198デフォルトの名無しさん2015/06/02(火) 20:57:50.64ID:ex2Jk34L
_なんて使わないで堂々と大文字でUNDERSCORE.でいいのに
面倒くさいから_にしたなんていっても、
UNDERSCOREのようなループ処理は他の頻出するキーワードに比べてそう頻繁に使うもんじゃないから、
UNDERSCOREと打ち込むくらい苦にはならない
むしろ見ただけでUNDERSCOREとわかるメリットのほうが大きい。
0199デフォルトの名無しさん2015/06/02(火) 20:58:44.32ID:80AN9G/c
>>190
> $と_を選択したjQueryとundersocreの作者は天才だと思うぞ

天才じゃなくてズルいと思ったな。
そんな特等席を取るなんてw

でもjQueryとlodashなら許せるよ。

DOM操作目的が多いJavaScriptで標準よりも
優れたライブラリに仕上げたjQueryは高く評価できるし。

JavaScriptという言語自体に足りない(そして他の言語にはある)
基本的な機能を備えたlodashも一文字名前空間を与える価値はある。

これ以外に一文字を与える価値が有るものなんてまず無いだろう。
(あえて言うのなら多言語のためのgettextだろうね)

http://ja.wikipedia.org/wiki/Gettext
> まず、gettextが利用されるようソースコードの修正を行なう。これはほとんどのプログラミング言語において、
> ソースコード中の文字列がまずgettext関数へ渡されるよう、文字列をラップしていく作業となる。
> 読みやすさやキータイプの手間を省くため gettextには通常 _ のエイリアスが付けられる。C言語では、
>
> printf("My name is %s.\n", my_name);
>
> を以下のように変更する:
>
> printf(_("My name is %s.\n"), my_name);
0200デフォルトの名無しさん2015/06/02(火) 21:00:08.82ID:80AN9G/c
>>198
開発効率と可読性が悪いだろw

なんで多く出てくるものに、
そんなに長い情報量を与えないといけないんだ?

圧縮の基本だぞ。
多く使うものに短いビットを割り当てるのは。
0202デフォルトの名無しさん2015/06/02(火) 23:09:26.72ID:tDj3/Qmg
圧縮率が気になる人は var, a, b, c; でも使えばいい
_ が気にならないなら Java でも PHP でも同じように使えばいい
それが誰が見てもコードの意図を理解できるものであると思うのならな
0203デフォルトの名無しさん2015/06/03(水) 08:42:27.59ID:tNzh/NJ7
> それが誰が見てもコードの意図を理解できるものであると思うのならな

ん? 馬鹿が見てもわかるコードなんてあると思うのか?
何の知識も持たない奴が、forとか見て、繰り返しだな。なんてわかると思うのか?

知識があるプログラマが見てわかれば十分だろw
0205デフォルトの名無しさん2015/06/03(水) 09:32:01.02ID:HnGZ0ASm
そもそもjQueryの根幹を成していたcssQuery作者はJSに習熟していたから$なんて使わなかったが、
当時JS初心者が浅い知識で無茶苦茶に作ったprototypejsが流行っていてユーザーがそこで$にすっかり慣れてしまっていたから、彼らを取り込もうと図った時に敢えて$を使った。
0206デフォルトの名無しさん2015/06/03(水) 09:41:02.46ID:HnGZ0ASm
jQueryリリース日から知っているのって、俺以外で何人いるかな、まあ、ライバル心が凄くて、露骨に他のライブラリーを威圧する画像を貼っていて苦笑ものだった。
実際、query api がなかった当時において、飛び抜けた存在だった。
誰も知らないだろうが、既に消した10年ほど前のブログで俺が日本で最初にjQueryにお墨付きを出したので、変な責任感があって、今や粗大ゴミと化したjQueryを徹底的に駆除しなきゃならないと思っている。
0207デフォルトの名無しさん2015/06/03(水) 09:53:38.81ID:L99ZSHzZ
>>205
今じゃすっかり死に絶えたね prototype.jsは

未だに$使ってる奴は、PHPでもやってろって思うね。
0208デフォルトの名無しさん2015/06/03(水) 09:53:42.15ID:HnGZ0ASm
どうでもいいが、underscorejsはグローバルで名前がかち合わないよう自動処理してるだろ。だから_にこだわりも何もないよ、あれは。あの作者はさすがだなと思う。
0209デフォルトの名無しさん2015/06/03(水) 10:04:47.49ID:HnGZ0ASm
jQueryでみんなが慣れてしまったメソッドチェーンはOOPであるJSならではの妥協の産物であって決して素敵な何かではない。
0210デフォルトの名無しさん2015/06/03(水) 17:34:44.34ID:/Ca0vDfD
> jQueryでみんなが慣れてしまったメソッドチェーンはOOPであるJSならではの妥協の産物であって決して素敵な何かではない。

メソッドチェーン便利じゃん
メソッドチェーンを否定するなら、代わりに何を推すのだろうか
0212デフォルトの名無しさん2015/06/03(水) 21:53:47.03ID:tNzh/NJ7
>>206
> jQueryリリース日から知っているのって、俺以外で何人いるかな、まあ、ライバル心が凄くて、露骨に他のライブラリーを威圧する画像を貼っていて苦笑ものだった。

知ってるも何も、Internet Archiveに残ってるよ。
その画像ってどれのこと?

https://web.archive.org/web/20060203025710/http://jquery.com/
0213デフォルトの名無しさん2015/06/03(水) 21:56:52.15ID:tNzh/NJ7
>>209
jQueryでみんなが慣れてしまったメソッドチェーンは
jQueryができるより前から知っていたが、はて?
0216デフォルトの名無しさん2015/06/04(木) 11:41:14.80ID:sc3w8p67
vue.js でelを指定しない時にHTMLを生成できるって書いてある記事を見かけたのだけど、どうやればいいんだ?
0218デフォルトの名無しさん2015/06/04(木) 16:48:24.05ID:TldR44zJ
本人乙
0219デフォルトの名無しさん2015/06/04(木) 17:08:20.45ID:JWskV460
まあ名前付けが傲慢な感じはあるね
prototypeとかqueryとかnodeとかbootstrapとか、
一般的なコンピュータ用語になんでもjs付ければ許されるのかと

ここ5年くらい、Web屋の無知と傲慢が招いた名前空間の汚染が激しいように思う
0220デフォルトの名無しさん2015/06/04(木) 17:16:37.66ID:yVQOALuO
>>219
> ここ5年くらい、Web屋の無知と傲慢が招いた名前空間の汚染が激しい

という無知
0221デフォルトの名無しさん2015/06/04(木) 18:11:41.00ID:JWskV460
>>220
おっWeb屋だ、元気?

ところでv8をビルドするときに使う
bootstrapスクリプトの機序をどうやって検索したらいいか教えてくれよw
0223デフォルトの名無しさん2015/06/04(木) 23:15:35.68ID:U3atrZZO
>>219
世の中の大半は、おまえより生産的で知識豊富な人たちが開発したと思ってるけどね
0226デフォルトの名無しさん2015/06/07(日) 07:11:03.31ID:ohZIkVP1
ま、ウェブ屋の大半が馬鹿なのは本当だろう
巨大なページに普通のjquery適用させて重い重い言ってるのよく見るしな
0227デフォルトの名無しさん2015/06/07(日) 10:09:01.52ID:QDivtYyn
中古のスマホやタブレットでデザイナーに作られたようなjQuery満載の糞ページを表示させると電力不足を引き起こされてバッテリー残量が正確に認識されなくなってOSが緊急終了させられる。
今やスマホどころかタブレットもバッテリー内蔵で交換は困難/不可能だからバッテリーが寿命になっても使い続けられている端末はいくらでもある。
0229デフォルトの名無しさん2015/06/07(日) 11:28:19.29ID:J7/rKSpK
>>226
とにかく書き捨ての糞プロジェクトが増えた
こんな流れはGoogleがつくった感じする
0230デフォルトの名無しさん2015/06/07(日) 12:55:15.14ID:+aAn4ks1
誰かのせいにして安心するのは間違ってる
それは作った当人らの責任だろ
0231デフォルトの名無しさん2015/06/07(日) 21:23:07.05ID:J7/rKSpK
詐欺業者が横行してて
姉歯的案件だらけだよ
年金記録流出も起こるべくして起きた
0234デフォルトの名無しさん2015/06/17(水) 17:09:08.15ID:FiJHYwC6
関係無いけど久しぶりにJSLint使おうと思ったら随分変わってるのな
つーか何で x /= 3; でストップするんだ?わけわからんのだが
0235デフォルトの名無しさん2015/07/02(木) 17:04:18.93ID:p+4VzYpK
他人が作ったコードをメンテすることになってJSDocアノテーションされてたので
ドキュメント化しようという話になった
開発時にはがJSDoc Toolkit(https://code.google.com/p/jsdoc-toolkit/)を使っていたようなのだが
それはすでにサポート終了してテンプレートも消えていた

それでJSDoc3(https://github.com/jsdoc3/jsdoc)を試しているのだがデフォルトのテンプレートが
どうにも満足のいかないものだったので、テンプレートをいくつか探して試した
なかには not found のエラーを出すものがあり、そろそろ疑問に感じてきた

それで JSDoc を jsdoc -T としてテスト実行してみたところ大量の not found
えっ? テストしてないでリリースしてるの? それともこちらの環境の問題?
ちなみに Windows 7 環境で同梱のバッチで実行してるのだけれども
java 上で動くのだからその辺は一緒のはず?
javaランタイムのバージョン?

もし Windows 上で JSDoc3 を使っている方がいたら
安定して動作している環境を教えてほしい
0236デフォルトの名無しさん2015/07/02(木) 17:09:48.72ID:eJl3FSc8
>>235
$ git clone https://github.com/jsdoc3/jsdoc
Initialized empty Git repository in /home/hoge/src/jsdoc/.git/
remote: Counting objects: 16429, done.
remote: Total 16429 (delta 0), reused 0 (delta 0), pack-reused 16429
Receiving objects: 100% (16429/16429), 16.16 MiB | 377 KiB/s, done.
Resolving deltas: 100% (8177/8177), done.
$ cd jsdoc/
$ ./jsdoc -T
Running tests...
.....(略)....

Finished in 4.993 seconds
1163 tests, 2965 assertions, 0 failures

.....(略)....

Finished in 0.054 seconds
33 tests, 60 assertions, 0 failures
0238デフォルトの名無しさん2015/07/02(木) 17:11:59.32ID:eJl3FSc8
ちなみに、
$ java -version
openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b13)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
0239デフォルトの名無しさん2015/07/02(木) 17:18:31.81ID:p+4VzYpK
同じ手順を Windows 上の Git Bash にて行ってみた

$ git clone https://github.com/jsdoc3/jsdoc
Cloning into 'jsdoc'...
remote: Counting objects: 16429, done.
remote: Total 16429 (delta 0), reused 0 (delta 0), pack-reused 16429
Receiving objects: 100% (16429/16429), 16.16 MiB | 1.17 MiB/s, done.
Resolving deltas: 100% (8177/8177), done.
Checking connectivity... done.
Checking out files: 100% (620/620), done.

$ cd jsdoc/
$ ./jsdoc -T
js: exception from uncaught JavaScript throw: Error: Module "c:/Users/xxxxxx/Documents/GitHub/jsdoc/jsdoc.js" not found.

うわーん
0240デフォルトの名無しさん2015/07/02(木) 17:20:04.04ID:p+4VzYpK
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)

です
0241デフォルトの名無しさん2015/07/02(木) 17:21:39.94ID:eJl3FSc8
>>239
Windowsは、jsdoc.cmdを実行するみたいだよ。

ただ、俺には理解不能なエラーが出た。
Javaとか知らんし。

> $ .\jsdoc.cmd -T
> Running tests...
> org.mozilla.javascript.EcmaError: ReferenceError: "self" is not defined. (file:/C:/Temp/jsdoc/node_m
> odules/bluebird/js/main/captured_trace.js#464)
0242デフォルトの名無しさん2015/07/02(木) 17:34:40.81ID:p+4VzYpK
やっぱ Linux環境を用意しないとダメなんかなあ
ただテストではエラー出るけど実際に使ってみた際にはエラーは出ないんだよなあ

テンプレートはデフォルトと
https://github.com/Nijikokun/minami
https://github.com/davidshimjs/jaguarjs-jsdoc
はエラー無しで通った

https://github.com/bvalosek/jsdoc3-bootstrap
https://github.com/terryweiss/docstrap
https://github.com/DBCDK/jsdoc3Template
はダメだった
0243デフォルトの名無しさん2015/07/02(木) 17:43:03.98ID:eJl3FSc8
Macでもやってみた。
3年位使ってたけど、Java入ってないし。JDKのインストール方法をググる所から始めた。

Web開発にMac使ってる人が多いのは、こういうところかもね。

$ ./jsdoc -T
Running tests...
....(略)...

Finished in 3.486 seconds
1163 tests, 2965 assertions, 0 failures

....(略)...

Finished in 0.024 seconds
33 tests, 60 assertions, 0 failures
0245デフォルトの名無しさん2015/07/17(金) 23:16:41.01ID:GZ2lmC/i
ttp://www.bluefoun.pos.to/games/howto/htimg.html
ここに出てくる関数gameBodyって意味あんのか・・・?
これ書いただけじゃ何も実行できんぞ
0247デフォルトの名無しさん2015/07/24(金) 23:57:05.40ID:QlYyU5j9
迷子なんでここでいいかな?
cordova(phonegap)で躓いてるんだけど、専用スレが見当たらない
誘導plz
0248デフォルトの名無しさん2015/07/25(土) 00:05:32.97ID:385UensT
そもそもフレームワークスレがないんだわ
自分で建ててもいいんじゃない
0249デフォルトの名無しさん2015/07/26(日) 00:45:58.44ID:Nu2ySp1+
webアプリの伝票を表示する画面のHTMLで、テーブルタグでエクセル方眼紙作ってあった
列とか必要以上に多くて無駄にセルの結合してあった
0252デフォルトの名無しさん2015/08/02(日) 18:40:44.98ID:mqZtRy/B
数字の1と文字の1が一致して笑った。
カス言語すぎる。
0253デフォルトの名無しさん2015/08/02(日) 18:45:01.04ID:dTRZmQiN
たしかperlも一致してた気がする
0255デフォルトの名無しさん2015/08/02(日) 19:23:25.05ID:ea/y5J7a
JSは互換を安易に切れないからな
残りカスのような変な仕様は山ほどある
0259デフォルトの名無しさん2015/08/02(日) 19:41:23.07ID:mqZtRy/B
じゃあ、==の存在意義はなんだよ
0260デフォルトの名無しさん2015/08/02(日) 19:49:47.26ID:dTRZmQiN
explicit宣言で==がsyntaxerrorになったりせんのけ
0261デフォルトの名無しさん2015/08/02(日) 20:51:00.19ID:j05l/s8s
変数に型がない言語ではどうしても、
== と === 相当の機能が必要になる。
変数に型がない言語では全て同じ。
0262デフォルトの名無しさん2015/08/02(日) 21:47:56.95ID:sI4u8psA
ID:mqZtRy/B は素直に静的な型宣言を必要とするコンパイル言語を使っとけ
0263デフォルトの名無しさん2015/08/02(日) 22:13:12.22ID:dTRZmQiN
CoffeeScriptおすすめですお
0264デフォルトの名無しさん2015/08/02(日) 22:15:15.51ID:j05l/s8s
言語としては悪くないが、
将来性として悪い。

BabelなどでES6が使えるようになった今、
CoffeeScriptの役目は終わった。
優位性が無くなったのだから。

CoffeeScriptはES6をつくるための
犠牲になったのだ。
0267デフォルトの名無しさん2015/08/03(月) 05:17:31.66ID:M3KvY+a0
>>261
luaならそんなクソ仕様ないけど
0268デフォルトの名無しさん2015/08/03(月) 20:20:01.84ID:OzQ4PZKS
>>267
でもこういうクソ仕様はありますね。

2.2.1 - 変換
Luaは文字列と数値を実行時に自動的に変換する。 すべての数学演算は、
文字列に適用されると、一般的な変換ルールに基づいてその文字列を数値に変換しようとする。


ただし、例外があって


2.5.2 - 関係演算子
2.2.1 の変換ルールは等価比較には適用されない。 そのため、"0"==0 は false に評価され、
t[0] と t["0"] は異なったテーブルエントリを示す。


一貫性がない。
0269デフォルトの名無しさん2015/08/04(火) 11:19:43.50ID:Wrx2TKJj
NaN !== NaN は他言語でもそうなのかな
これだけは直感的でないと感じてしまう
0270デフォルトの名無しさん2015/08/04(火) 20:47:31.71ID:LaebqzUe
>>269
Rubyも同じ
http://docs.ruby-lang.org/ja/search/class:Float/version:2.0.0/query:NAN/
> ただし、NaN 同士の比較では常に false を返します。

Pythonでも同様
http://d.hatena.ne.jp/yosshi71jp/20090920/1253415431
> nanは非数(not a number)、infは無限(infinity)。通常、
> この表示になってしまったら、これにどんな演算を行っても、結果はもう変わらない。

PHPでも
PHP 型の比較表
http://php.net/manual/ja/types.comparisons.php
> この値を、自分自身を含む他の値と比較すると、緩い比較であっても厳しい比較であっても
> 結果は FALSE となります (つまり NAN != NAN であり NAN !== NAN であるということです)。

さらにPerlでも
http://perldoc.jp/docs/perl/5.6.1/perlop.pod
> NaN はどの値に対しても(NaN に対してでさえも) "<", "==", ">", "<=", ">=" の
> いずれも成立しないので、これらは全て偽となります。

SQLでも似た仕様がある。

NULL は NULL と等しくない!?
http://blog.livedoor.jp/i_am_best/archives/7845603.html
0271デフォルトの名無しさん2015/08/04(火) 20:48:25.72ID:LaebqzUe
>>269
> NaN !== NaN は他言語でもそうなのかな
> これだけは直感的でないと感じてしまう

直感的じゃないという意見はわからなくもないが、
他言語でも同じなわけで、それを知らないということは、
君の経験不足ってのがよく分かるねw
0273デフォルトの名無しさん2015/08/04(火) 21:03:34.53ID:SiN2Ipli
a = NaN, b = NaN
aとbを比較しようとしたときにどういう問題が発生するか考えれば納得出来るだろう
0274デフォルトの名無しさん2015/08/04(火) 21:18:44.87ID:LaebqzUe
>>273
わかりづらいw

var a = "a";
var b = "b";

parseInt(a) == parseInt(b)

これがtrueだとおかしいだろ?
ぐらいのことを言えよ。
0275デフォルトの名無しさん2015/08/04(火) 21:25:12.39ID:MmQrnXHp
は?
NaN という状態の意味を考えろよ?
言語でしか考えてなくてコンピュータで処理するってこと微塵も考えてないだろ?
0278デフォルトの名無しさん2015/08/04(火) 21:56:56.46ID:2w4CQfTI
>>271
他言語の経験がないのは認めるけど、煽りとかどうでもいいから
NaN !== NaN が成立する合理的な理由があるなら教えて欲しい
「他言語でもそうだから」という教科書的な答えでは納得できない

>>273-274
その比較はする必要性を全く感じないので、そのコードの目的がわからない
null, undefined は等価なのに NaN だけ特別扱いする理由がわからない
0280デフォルトの名無しさん2015/08/04(火) 22:56:02.17ID:MmQrnXHp
>>278
null や undefined は言語上で特定の意味を与えられた値にすぎない
NaN はそれとは全く違う
不正な演算によって生じた結果を表す状態で、これは言語ではなくてコンピュータの仕組みから定義されているもの
「不正な値」だと理解してもらっていい
不正な値なので大小比較自体が成立しないのでその結果も不明となる
あとは自分で NaN をググるなり、コンピュータでの数値表現について勉強するなりしてくれ
0282デフォルトの名無しさん2015/08/05(水) 00:11:47.63ID:GLQwjMtk
しかし大小比較自体が成立しないんだったら
言語側では例外を投げてもいいような気もするが
IEEE754で演算上の振る舞いも規定されているのか
0286デフォルトの名無しさん2015/08/05(水) 11:11:39.52ID:A+1+0YPe
>>283
"Not a Number" だろう?
"Not a Number" からは不定値か固定値かは読み取れないと思うが
0290デフォルトの名無しさん2015/08/05(水) 19:53:39.57ID:HdJkl2eK
                               / {;;;;;;> _八_ :: :|
                         /)   ..:::::::::::ヽ ( : |
                           , - '   .. '' {.. :::( 丶 _)  |
                          /....    ,.... .. :::     ::: |
                   _/{:::::r‐  ,.::::::::::/   :   :  }
                _ イ   :::::   {:::::::::}. ...   :::  . ´ ^}
            _... , ィ  ... ::   .. ::  , ::::::::::::      .:.  . ,'
             /:::   . ´      ゛   :::::: :: ::::::::) ...:::.::.  }
       .. イ:...::   ´ ,..::::::::::::::. ..::::..        :::"゛.. ::::  ,'
      ,.´  ...  .:. :: ´(::::::::: ゝ .:::::::ノ    ;..  ハ     .. ,′
.     /  {::::::::..  ::: ::::  "" ::  ......  ⌒ヽ  {     {
    /:::.      /  .... -<::  :::::::(:::::::   }  レ:::::::::::... {
.    {ヽ      <  :::   ::   ::     ::::  { :::::::::::: ヽ
    {:: ..       ___{      ,....:.:.:.:.::ヽ ,.    { i::::::::::::   |
    ヾ::::    ´        ,'.:.:.:.:.:.:.:.:.:.   :: .::.  ゛"゛  .,′
     \       y :.:.:.:: ヾ::  ::  :: } .. /:   `,´  /
.        \      ..::.::.::.. `    ::::::ゝ :: ::: ::.     /
           \    ヾ:._.:   ..   ,:.: −       _ン
           \    :::::  ... ..  .  "゛    ,..ィ ~
            ヽ _ ::::     ....:::. ::::::::::_ .ン
                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0291デフォルトの名無しさん2015/08/05(水) 19:57:24.97ID:HdJkl2eK
                   /                             ヽ
                    /                              ヽ
                    /                     人         ト、 |
                   /   >‐ァ              / _\       ! jノ
               /  / /            /,=彡'⌒  V ,=ミ   \
                 / /  /           r==彡tテ丁>   ∨ /ヽ |   \___,
             //    /        __  /`¨´ ヽ.ゞ'′    リ ノ /     _ノ
               {'    . ′      ⌒≫t示             /    <
                   /          >ヘヽゞイ              ∨      ヽ
             /       ,, ’     ヽ丿              ∨     !
             /  _  ..  ´          `ー  _,. -‐'’       /  \f⌒ヽ. |
             ̄                 ヽ ´           /     \   ヽ!
                                  \       /  !     /`≫‐-
            -‐…‐-                 \     /   !   /`y'´
            // ̄)    `丶                  _ア爪      .'  /`y'
          // /       ‘,             -‐</ノ ヽ   ′/`y'
       // /          L     ,-<     ∨\ ! _, イヽ/
       | し'           丿 |   /    ヽ.    ヽ/ 丁 〉 //
       | r−、         / /  /  .′          ̄  ̄
       | U  `ー― - イ /    /  '
       | U           |      /   !


                    若草物語 ナンとジョー先生
0293デフォルトの名無しさん2015/10/04(日) 11:02:40.14ID:K1qsk9YZ
よくsetTimeoutつかって関数を一定時間繰り返し実行する例を見るけど
メモリリーク(スタックオーバーフロー)しそうな気がしてならねえ
function viewTime()
{
var date = new Date();//これはスタックに貯まるのか?
console.log("date = " + date);
setTimeout(viewTime,1000);
}
0294デフォルトの名無しさん2015/10/04(日) 11:03:55.39ID:K1qsk9YZ
ああ違う、非同期だからsetTimeoutが終わった時点で消滅するのか
納得
0296デフォルトの名無しさん2015/10/05(月) 06:12:57.62ID:cBREl52D
ローカル変数なんだから関数終了で破棄されるだろ
非同期とか割り込みとか関係無い
0297デフォルトの名無しさん2015/10/05(月) 06:40:12.29ID:sGblq84u
>>296
わからんやつだな
setTimeout が 指定時間後に実行する関数を設定しているだけでそこで呼び出してるわけじゃない
ってすぐに理解できてないと

viewTime()
 setTimeout()
  viewTime()
   setTimeout()
    viewTime()
     ...

みたいに再帰呼び出ししてるように錯覚しちゃうってことだろうよ
再帰呼び出しなら呼び元は終了してないからやばいよね

次の段階として、非同期で呼ばれるとなんとなく理解はしていても
別のコンテキストで実行されるってのがわかってないと this とか使ってあれえ?ってなことになる
0298デフォルトの名無しさん2015/10/05(月) 09:58:01.89ID:YN/6GJzS
>>297
それは仮想的なコードだと思うけど、クロージャじゃないんだから一回毎に viewTime 内のメモリはGCが解放してくれないとおかしいんじゃない?
そうでなければ、ブラウザのバグだと思うけど
03016102015/11/05(木) 21:03:50.50ID:O9StB1rc
じゃあここでいいぞ。

一応俺のスタンスを言っておくと、俺はお前みたいな奴が嫌いじゃない。
お前はあのスレの中で唯一積極的にコードを書き、IDを付けて議論に持ち込み、論理的に解決しようとする。この点はいい。
ただなあ、技術的に余りにも稚拙すぎるから、色々空回りしている。
だからやる気があるのなら少しはサポートしてやるよ。上達したいかどうかはお前が決めろ。

ちなみにマジでウザイから無駄に吠えるのは止めろ。お前が大したことがないのは事実なんだよ。
今のお前ではあのベンチマークがどれだけ間抜けなことになっているのか分からないのだろうが、
上達した後から読み返せば今のお前の痛さは発狂レベルだぞ。
まあ、今のお前には俺が嘘を言っているとしか思えないのだろうけども。

とはいえ、あのスレの中の初心者で上達する可能性があるのはお前だけだ。
他の馬鹿共はお前と同様にあのベンチの問題が分からないにもかかわらず、煽ることしかできない無能共だ。
そもそも俺はお前みたいに「自分でやる」タイプじゃないとプログラミングには向かないと思っているので、
一から教えてくださいとか言われても死ねとしか思わない。
だからあのスレにたむろしている馬鹿共が何であそこにいるのかも謎なんだが。

もしやるのなら、こちらのスレの内容は向こうには投稿しないように。ゴミ共が増えるだけだから。
ベンチマークの結果がデタラメすぎるので訂正したくなると思うが、その必要もない。
心配せずともJavaScriptの個人的Web情報はデタラメばかりだし、
馬鹿は馬鹿のままでいればいいし、強制的に教育する方法もないんだよ。
今のお前のように、自分で馬鹿を止めますと決心させるしかないんだ。
そして自分で学ぼうとする心がある奴は、あの経緯ならこちらを見ている。だから、転載する必要は全くない。
マジであのスレ終わっているぞ。いろんな意味で。

まあとにかく、どうするかはお前が決めろ。
0304デフォルトの名無しさん2015/11/11(水) 10:08:35.38ID:M5AnRRSD
>>301の輝かしい功績

+ JavaScript の質問用スレッド vol.126 +
http://peace.2ch.net/test/read.cgi/hp/1439005423/
+ JavaScript の質問用スレッド vol.125 + [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1436400138/
+ JavaScript の質問用スレッド vol.124 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1427008867/l50
+ JavaScript の質問用スレッド vol.123 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1422084185/l50
+ JavaScript の質問用スレッド vol.123 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423910471/l50
+ JavaScript の質問用スレッド vol.122 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1418395948/l50
+ JavaScript の質問用スレッド vol.121 +
http://peace.2ch.net/test/read.cgi/hp/1410603104/l50
0311デフォルトの名無しさん2016/03/26(土) 00:52:55.36ID:VGHlAznE
with(this){してその中でプロパティ読むのってアリ?}
0313デフォルトの名無しさん2016/05/01(日) 15:21:38.46ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0314デフォルトの名無しさん2016/06/09(木) 17:18:01.82ID:dpBG783z
たまにwithあったらなって思うことはあるな
例えばWebpackがモジュールに引数で渡す挙動とか
0315デフォルトの名無しさん2016/06/29(水) 13:17:10.60ID:+ZYTNDiN
http://www.cybersyndrome.net/
ここの検索結果画面、例えば
http://www.cybersyndrome.net/search.cgi?q=&;a=&f=&s=&n=
からプロキシ一覧を取得しようとしてXMLHttpRequestを使ってresponseTextを見てるんだけど
どうもscriptを動かさないとプロキシが表示されないみたい
そんなわけでresponseTextの中の3番目のスクリプトを動かしてプロキシ一覧を表示させたいんだけど
どうするのが良策ですか?ちなみにChrome
0318デフォルトの名無しさん2016/10/26(水) 10:00:03.07ID:LA3y7fsO
java挫折したんでこっちにきました
だいぶとっつきやすい・・・気がする
0320デフォルトの名無しさん2018/02/16(金) 06:29:27.57ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0321デフォルトの名無しさん2018/02/25(日) 23:50:49.29ID:2698yb5F
javascriptで配列の要素それぞれに関数を作用させて要素を作るってできますか?
var a = [1,2,3];
function f(x){return x+1;}
var b = f(a);// b = [2,3,4];
みたいな
0324デフォルトの名無しさん2018/03/04(日) 23:55:48.77ID:fY1aJvVU
javascriptの正規表現で
A/B/C(http://hoge.com/fuga)/X/Y
このような文字列を/で分割したいが、()の中の/は分割の対象にしない
ということはどのようにすればいいでしょうか?
0326デフォルトの名無しさん2018/03/05(月) 00:58:40.26ID:1SNP3/tO
ありがとうございます
ネストしてないのでこれで事足りそうです
0327デフォルトの名無しさん2018/03/10(土) 21:38:04.28ID:LJUwa8tD
XMLHttpRequestを使って取得したページのスクリプトを実行させようとしているのですが
できません
取得したページを構成
var doc =document.implementation.createHTMLDocument("");
doc.body.innerHTML =req.responseText;
このdocの中のscriptタグを取り出し
新たにscript elementをdoc.createElement("script")で作りコピーし
更にappendChildでスクリプトを追加し直せば実行されるかと思いましたがされませんでした(Chrome)
なにかいい知恵はないでしょうか
0328デフォルトの名無しさん2018/03/10(土) 21:52:05.17ID:LJUwa8tD
今ふと思ったのですが
作っているものがChromeの拡張機能なのでセキュリティ設定で外部のスクリプトができないようになってるだけかもしれません
ちょっと見直してきます
0330デフォルトの名無しさん2018/03/10(土) 23:06:06.97ID:LJUwa8tD
なるほど
とりあえず目的に対して別の方法を思いついたのでスクリプトの再実行はやめておきます
0331デフォルトの名無しさん2018/05/23(水) 22:22:52.48ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

9O7AM
0332デフォルトの名無しさん2018/07/04(水) 23:42:45.95ID:gFgZc5FG
C4H
0333デフォルトの名無しさん2018/08/15(水) 08:39:41.98ID:tlm7UXZ5
"abcde?fgh".match("e?f")
これが
["f", index: 6, input: "abcde?fgh", groups: undefined]
になるんですが(chromeブラウザのコンソールで確認)
文字列の中の?ってどういう扱いなんでしたっけ?
0335デフォルトの名無しさん2018/08/15(水) 18:38:51.76ID:tlm7UXZ5
match("e?f")の"e?f"は文字列リテラルじゃなくて正規表現/e?f/と解釈されるということですか?
0336デフォルトの名無しさん2019/07/05(金) 21:42:57.25ID:efC0bxMu
javascriptのオブジェクトの書き方で
{hoge:hoge}とかこうとして{hoge,hoge}と書いてエラーにならなかったんですが
これって有効なんですかね?
0339デフォルトの名無しさん2019/07/07(日) 10:14:41.57ID:3ySSrzHj
あーわかりました
var a = 2;

var x = {a};
とすると
var x = {a:2};
と同じになるんですね

>>338
勉強になります
0340デフォルトの名無しさん2019/07/13(土) 23:14:14.21ID:57lWPs8z
https://mevius.5ch.net/test/read.cgi/tech/1489511075/862 で質問した者なのだけど、
String.matchとRegExp.execの挙動の細かい違いについて分かる人居る?

仕様書はMDNから飛べるけど一応以下。
https://tc39.es/ecma262/#sec-string.prototype.match
https://tc39.es/ecma262/#sec-regexp.prototype.exec
正直俺はよく分からない。

問題になるのは質問した内容で、再掲すると、
'@time;prop1:style1;prop2:style2'.match(/(^|[@;])[^@;]*/g); // 結果 ["", ";prop1:style1", ";prop2:style2"] 、俺の想定 ["", "@time",";prop1:style1", ";prop2:style2"]
'@time;prop1:style1;prop2:style2'.match(/(^.|[@;])[^@;]*/g); // 結果 ["@time", ";prop1:style1", ";prop2:style2"] 、これは納得
の前者の挙動が謎だったのだが、

var re = /(^|[@;])[^@;]*/g;
var str = '@time;prop1:style1;prop2:style2';
re.exec(str); // 結果 ["", ""]
console.log(re.lastIndex);

でちまちま調べる限り、lastIndexは0のまま固定されており、俺の『正規表現の』理解は間違いではないことは分かった。
当然これだとMDNのexecにあるような while ((myArray = myRe.exec(str)) !== null) みたいなことをすると無限ループする。
だから String.match はそうならないように何かしら対策がしてあって、結果、頭のマッチが取れないようだ。
なのだが、仕様書を見ても違うのは分かるが何がどうなのかよく分からない。
String.matchでは (^| の条件は駄目で、 (^.| のように、「文頭」ではなく「文頭の文字」に当たるようにしないといけない、ということなのか?
0341デフォルトの名無しさん2019/07/13(土) 23:28:56.86ID:57lWPs8z
すいません分かりました。

String.match は RegExp[@@match] を読んでて、その中で RegExp.exec を呼んでいる。
RegExp.exec は当然そのまま RegExp.exec を呼んでいる。
だからそのままだと当然挙動は同じになるのだけど、String.matchの場合、
> 4. If matchStr is the empty String, then
> a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")).
> b. Let nextIndex be AdvanceStringIndex(S, thisIndex, fullUnicode).
> c. Perform ? Set(rx, "lastIndex", nextIndex, true).
https://tc39.es/ecma262/#sec-regexpbuiltinexec
って書いてあったわ。
つまりマッチ結果が空文字だと必ず一文字進めるようになっており、「文頭マッチのフラグを落とす」仕様にはなってない。
この仕様でいいのか?という気もするが、とにかくそうなっているようだ。
お騒がせしました。
0342デフォルトの名無しさん2019/07/16(火) 20:12:13.23ID:hMJFhr7R
というかこれはMDNに注意書きがいる案件だ。
勿論君の手柄にしてくれていいから、誰かやっておいてくれ。
追記は取り敢えず4ヶ所(3文案)か?

1. String.match に、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が結果に含まれないことがあります。」

2. String.replaceに、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が置換されないことがあります。」

3. RegExp.exexとRegExp.testに、
「空文字にマッチした場合、lastIndexが更新されません。(+1されません)
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、
ループ内でマッチ結果の空文字判定を行わないと、無限ループします。」

問題となるケースは、空文字マッチを含む正規表現+空文字マッチ直後にマッチ文字列が来る場合。
具体的には>>341
searchはgマッチ関係ないからセーフ、
splitに関係するケースがあるかは分からない。(ぱっとは思いつかない)
matchAllは知らん。

ちなみに以前 test について文句を言った者だ。これについて対応してくれた人はありがとう。
今回も頼むわ。
なお今確認すると、
> 注目すべきは、別な文字列で検索しても lastIndex がリセットされないことです。
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
とモロに書いてあって素晴らしい。ただこれはもっと赤字とか目立つように書くべきだが。

俺はWeb板は無視しているが、これについてだけは告知貼っておく。
いずれにしてもMDNの更新誰かよろしく。
0346デフォルトの名無しさん2019/07/17(水) 23:31:18.95ID:2/Bgill9
俺は全世界の問題を一人で背負い込むほど若者ではないんだよ。
MDNの決定プロセスなんて知らんし、
それ以前に他人が噛むことにより「承認」の手続きがなされ、よりましな方向になると信じてる。
バグを見つけるのも十分な貢献だし、それをMDNに記載するのも同様だ。
だから一人でやる必要も意味もないし、それ以前に一人でやるべきではないと思ってるんだよ。

お前らが「こんなのMDNに記載する必要なし」と思うのなら放置でよし、
「こんな落とし穴があるのなら共有すべきだ」と思うのなら、
俺はテストパターンを提供したのだから、お前らはMDNを書き直すことによってcontributeしろ、ということ。
0347デフォルトの名無しさん2019/07/18(木) 15:10:58.24ID:dK9bdFCv
一般的にはメンテナに投げるものだが
MDNはアカウント登録さえすれば修正できるものなのか
0348デフォルトの名無しさん2019/07/20(土) 00:35:46.99ID:YQUBknV3
>>348
多分そう。おそらくwikiと同じシステム。
ただ内容は英語版の翻訳でしかないので、おそらく翻訳以外の提案は英語版に出さないといけないのではないかな?と勝手に推測。
いずれにしても、経験者がいるのならそいつに頼むのが確実、といったところ。

JavaScript界隈はWebに間違った情報が垂れ流されてるケースが多く、
それは要するに「背伸びして書くから」だ。
大して経験もないのにさも熟練者のように振る舞うとか、
会社にしたって「技術力の宣伝になる」と考えて精一杯背伸びして書いてる。
だからオイオイ?みたいなのも散見されるだろ。

しかしこれも使いようだ。言い方を変えればやる気はあるのだから、そういう奴らにはやらせればいいのだ。
問題は、そういった「背伸び」状態で書く内容はゴミな事が多いので、そうではなく、
ちゃんとした内容をこちらが提供してやろう、というわけ。
そしてMDN等にコミットして箔をつけたがっている奴にやらせ、
こちらは手間を省け、win-winだ。

というわけで誰か頼む。
0350デフォルトの名無しさん2019/07/20(土) 17:17:10.12ID:YQUBknV3
だから既に言ったろ。
俺はこれは単独でやるよりも誰かにやらせる方が妥当だと考えてるんだよ。
それは、俺が間違っている可能性もあるから。

最低限、誰かが追試し、また、誰かが内容に賛同することを待つのは重要なことなんだ。
これによって暴走を防げる。
そしてMDNに書くこと自体は本来は大した作業量ではないが、
こういうのって往々にして政治的だから、場合によっては無駄に嵌ることになるんだよ。
実際、wikiだって編集合戦したり、その上で色々ルール決めたりしてるだろ。
MDNだって色々ある筈なんだよ。
だからそういうのを知ってる奴が出てきてどうするか話し合えるとしたらそれもありなんだよ。
日本みたいな根回し文化はないはずだとは思うけど、それも実際どうなのかは分からないし。
ただ、そこら辺を知ってる奴が本当にいたとして、
いちいちグダグダ説明するよりは自身で書き換えた方が早い、と判断すれば、勝手に書き換えてくれる。
前回も(ここに書いたのが反映されたかは確実ではないけど)「俺が書く」みたいな宣言もなく書き替わっていたし。
ROMな人が書き換えるのもありなんだよ。

いちいちグダグダ言ってくるのは若くてそれなりに正義感があるのだと思うが、
本件は1ヶ月後にきっちり書き替わってれば問題ないんだから、そんなにスピード感は要らないんだよ。
若くて元気があって、今後もJavaScriptに関わる気があるのなら、お前がやってくれたっていいんだぜ。
経験不足を自覚していて辞退するのなら、その点は俺が補ってやる、というわけでさ。

コミュニティは一人で回したり改善するものではないんだ。
各自がそれぞれ持ち寄って改善していくものなんだよ。
参加する気がある奴は出てこい、というわけ。(勿論黙って勝手にやってくれてても助かるが)
0351デフォルトの名無しさん2019/07/21(日) 07:40:42.79ID:LnfTVLsY
サンプルコードだけ書いて

Hi!

(sample & result)

plz help me
Thanks.


で良い
0352デフォルトの名無しさん2019/07/22(月) 20:36:34.20ID:dN38X5eV
>>352
お前はプログラマを止めた方がいい。


今からのプログラマはその程度の英語能力では生きていけない。JavaScriptも当然該当する。
ネタならウザイだけだから止めろ。
今時の若者プログラマはお前以上に英語は出来るから、全く面白くもないしウザイ。

「英語」が最大の問題だとお前が勝手に捉えたのは、お前自身が英語が全く出来ないからだ。
問題はそこではない。
そして仮にお前のように「英語」が最大の問題なら、英語が出来る奴と協力すればいいだけだ。
それもせずに、カタコト以下の英語で結論すら書かないのは邪魔であり、スパムでしかない。

英語が出来ないお前みたいな馬鹿が何かMDN等にcoutributeしたいのなら、
お前が英語が出来ないことを認めて、誰か最低限の英語が出来る奴を募ることだ。
俺が今やっているような方法でもいい。
だから仮に、お前が俺の英語能力を心配してくれたというのなら、
当然お前の投稿は普通の日本人よりも圧倒的に上手い英語で書かれていないと話にならない。
明らかにそうではないのだから、お前は本当にウザイ。

ただな、日本人は最低限度の英語は書ける。
相手と対面して話しているわけではないのだから、時間は無限にあるし、ゆっくり考えて書けばいい。
上手い英語である必要はない。ただし伝わる必要はあるが、
細かい文法(三単現のsとか)なんて間違ったところで伝わるから全く問題ない。
だから書けばいいだけだ。
お前みたいな、英語が出来もしないのに出来る気取りの馬鹿は何もしないから上達出来ずそのままなんだよ。
0355デフォルトの名無しさん2019/07/22(月) 23:27:25.55ID:dN38X5eV
>>353
何のことだ?と思って確認したが、
俺のJaneでは2に「ここ壊れてます」という投稿があって、一つずれているようだ。
F12で確認したところ、現在のデータにはないようなので、これは俺が合わせよう。


>>354
ゴミクズを丁寧に扱うのは断る。
ゴミクズが調子に乗るだけで、何の利益もないのはもう何度も経験している。
俺はゴミをゴミとして扱うだけであって、まともな奴にはまともに返事をしているつもりだ。
気に入らないなら無視でいい。お前が俺をゴミ扱いするのもお前の自由だ。

それ以前に、何でもかんでも「上から目線ガー」も死ねばいいと思っている。
お前のことだ。
俺がクズだとしても、それをMDNに書くかどうかは全く関係ないことだ。
クズからもたらされた情報であれ、正しければ、それなりに対処すればいいだけだ。
お前は何がしたいんだ?
俺はお前と群れようなんて1mmも思ってない。

俺は>>351をゴミだと判断した。だから叩きを行った。これで正しいと思っている。
これに文句をつけるお前は「丁寧な態度」なら間違いであれMDNに書き、
「粗暴な態度」なら情報が正しくてもMDNには書かない、と推測されるわけだが、
それは俺から見たらコミュニティの破壊者でしかない。
去れ。俺がお前を仲間として認めることはない。

仲間として扱って欲しいのなら、最低限、その価値がある投稿をするべきだ。
ここは匿名掲示板であり、お前がリアルでどんな地位にいたとしても、知ったことではない。
ここでは各自の書き込みで各自を証明するしかない。
「内容」よりも「態度」を重視するお前は俺からすると十分ゴミだ。

何度も言っているが、俺はこの件をMDNに反映することに賛同し、汗をかこう、という奴を募っているだけだ。
汗をかく気もなく、ただ乗りだけ目指している奴なんてコミュニティには要らない。死ね。
0357デフォルトの名無しさん2019/07/23(火) 23:14:48.71ID:2rFxEmo/
それで構わんぞ。

俺はゆとり----なにかにつけて「態度ガー」「上から目線ガー」「ぼくにやさしくしてくれなきゃいや」な連中----とは
価値観を共有出来ないし、したいとも思わない。
それ以前にゆとり的ポルポト型共産主義----「知識を持っていても持っていなくてもみんな平等」----も
間違っていると思っている。知らないよりは知ってる方が偉い、という価値観だ。
ただそれで異常に威張り散らす、例えば昔の仕様書廚みたいな奴を正当化することにはならんが。奴は異常だ。

俺が要求しているのは簡単なことだ。
・MDNに俺が書く、という奴を募っている。
・或いはこれに準じ、実際にMDNに書いたことのある奴からのノウハウの提供も待っている。
・また、「文案が悪い」等の修正も勿論歓迎だ。
 そもそも俺は仕様書を読み慣れておらず、最初から間違っている可能性すらある。
 だからこの場合は反論とそれを証明するテストパターンを出してもらえれば素晴らしい。

というわけだ。
それをお前らゆとりは技術案件全無視で「態度ガー」しか言えないんだろ。
逆に言えば、「やさしくしてくれるひとならいうことをきく」という価値観な訳だが、
それは幼稚園児----お菓子をくれるから付いていく----と同レベルでしかない。
俺は幼稚園児とつるみたいなんて思ってない。
0358デフォルトの名無しさん2019/07/23(火) 23:15:20.18ID:2rFxEmo/
ただ、Web板久しぶりに見たが、前よりましになっているのに驚いた。
ゆとりというモンスター出現に右往左往している前世代より、
ゆとりがいる世界で育ったゆとり後期/さとりの方がゆとりの扱い方が上手いらしい。
実はこれは他の場所でも同傾向が散見されていたりする。

5-6年前:JavaScriptのスレは他言語に比べて異常にレベルが低かった
1-2年前:他言語にもゆとりが流入したらしく、他言語も著しく酷くなった
最近:JavaScriptのスレに復活の兆し? <-- new!
2-3年後:他言語スレも復活か?

みたいな感じになってる。
JavaScripterは俺が思うに年齢層が他言語と比べて若い。だから先行指標になってる。
俺達がどうにも出来なかった荒らし共をWeb板の連中がどうやって追い払ったのかは分からないが、
いずれにしてもこの点についてはWeb板の連中の方が上だという事実は見えたので、俺は引き続き静観する。
(というより俺が余計なことをするとおそらく悪化するだけなので何もやらないし、読まない)

ネットはゆとり撲滅運動をやるべきだ。
ゆとりは「ゆとりに対する人格否定は絶対に許さないが、気に入らない奴はとりあえず人格否定」な訳だろ。
今やってるように。
だから俺みたいに、「人格否定?やりたきゃやれよ。ゆとりみたいなクズに人格を認められる意味なんてそもそもない」
とされると対処出来ず、ひたすら人格攻撃連呼だろ。今みたいに。
全くお前らは勘違いしてる。クズからは否定された方がクズが寄ってこずに助かるものだ。
だから俺はそれをやってる。
0359デフォルトの名無しさん2019/07/23(火) 23:16:43.88ID:2rFxEmo/
ゆとりは本当に根本的に勘違いしてる。
俺にマウント取りたければ、仕様書をよく読んで俺の間違いを探せばいいだけだ。
俺に間違いがないのなら、俺が偉そうな態度を取ったところで『何も問題ない』だろ。正しいんだから。
ゆとりの「丁寧であれば間違ってても許される」って価値観が根本的に間違いだ。
まず「正しいかどうか」であって、態度がどうこうは二の次だ。人格攻撃でマウント取ろうってのがおかしい。
そしてこういう俺を気に入らないのなら最初から無視すればいいだけ。これも最初から言ってる。
おれはゆとりと会話したいなんて思ってない。相手するだけ時間の無駄だからだ。
ただ、これにさとりは気づき初めて対処出来ている。結果的に俺達はさとりに学ぶべき事があるのだとは思う。

ちなみに俺とゆとりとの差異は、典型的には>>351を俺は「荒らし」だと見なしていることだ。
理由は「話が前に進まず、むしろ退行するから」だ。
これをゆとりは(俺の理解では)
・態度が偉そうではないから荒らしではない、むしろ偉そうなお前(俺のこと)が荒らし
・ゆとりは馬鹿だから英語が出来ない、だからみんな自分と同じで英語が出来ないと思っているし、思いたい
・そして英語が出来ないことも悪いなんて微塵も思ってない、むしろみんな違ってみんなイイ!
・それをガーガー喚き散らすお前(俺のこと)なんて大嫌い!それ!人格否定攻撃!
な幼稚園児レベルの価値観だ。だからゆとりが混ざるとコミュニティは崩壊していく。
いやゆとりにとってはそれが居心地がいいのだろうが、それ以前の世代にとっては大迷惑でしかない。
0360デフォルトの名無しさん2019/07/23(火) 23:17:26.54ID:2rFxEmo/
ところがさとりはゆとりに対応する何かを持っているようだ。これはちょっと確認する必要があるな、という感じ。
今俺がグダグダこのメタ案件を書いているのもそのため。
ゆとりは>>351みたいな糞投稿をしなければよかった、なんて反省は絶対せずに、
ひたすら「お前(俺のこと)が悪い!」と人格攻撃の連呼だ。俺はそれがゆとりの本当に駄目なところだと思っている。
そして俺は既に書いたがゆとりは殲滅対象だから、当然こういう機会が与えられたら「ゆとり死ね」とし、
「ゆとりが何故死ななければならないか」をきちんと説明するわけだ。今やっているように。
そうやって、少しでもネット全体がゆとり撲滅に動く助けになれば、と思っている。
これがコミュニティ(つまりネット全体)に対する俺流の貢献だ。

それに対してゆとりがゆとりに敵対する人(つまり俺)を攻撃して「ゆとり的居心地が良いコミュニティ」を維持するのは構わない。
ただそれなら俺達、或いは俺が所属しているコミュニティにちょっかい出さないでくれ。
ゆとりはゆとりだけの、俺達旧世代は俺達旧世代だけでそれぞれコミュニティを維持すればいい。
そしてどちらのコミュニティが生産的かで競えばいいだけだ。

本来ゆとりはネット接続率100%でそれなりの人数がいるのだから、
ゆとりだけの(ゆとりにとっては)居心地のよいSNSが出来ても何ら不思議でないし、
逆に、ない方が不自然なわけだが、ない。
これは、ゆとりがお子ちゃま過ぎてコミュニティの維持も出来ないし発展もしないからだ。

俺は最初から「ゆとり的価値観ではない」と明確に分かるように書いてるつもりだが、
それが読みとれなかったというのなら、それは俺の落ち度でもあるから、もっと分かりやすく書く。
本件については俺は今後必ず「ゆとり死ね」と入れるから、これでゆとり馬鹿にも分かるか?

ゆとり死ね
0362デフォルトの名無しさん2019/07/24(水) 22:42:37.95ID:MCkLbdZJ
>>361
そうやって嫌いな他人を全部脳内から排除してるのがゆとりの特徴だ。
だからゆとりはクズのままなんだよ。

ちょっと考えれば分かると思うのだが、
仮にMDNに、或いはJavaScriptの新規機能を標準化委員会に「リアル」で提案するとき、
そこで真面目に提案内容を議論/審議している状況で>>351が許されると思っているのか?
俺の投稿はお前にとって課長か係長か、或いは同僚か部下だが、いずれにしてもあり得ないだろ。

ゆとりは「ネット」では何をやってもいいと思いこんでいる。だから何も生産出来ない。
ゆとり以前の世代はリアルの延長でネットを使っている。
だから匿名でも単に匿名なだけでリアルレベルの議論は出来るし、また、それを目指している。
相手を見ておもねり、或いは自分が匿名なのを利用して場を破壊しまくるゆとりのようなクズではない。
そしてさとりはこれらの馬鹿騒ぎを見て、何か思うところがあるのだろう、確かに達観してる。

ゆとり死ね

といってもこれはおそらく「三つ子百まで」だからゆとりは今後ともネット上ではクズだ。
これは俺はネットデビューの状況に依るものだと推定している。

ゆとり以前: SNSが未発達/アングラで、ネットデビュー時の接続相手はリアルの知り合いが殆ど。
ゆとり: 2chやニコ等が一般的となってきて、ネットデビュー時の会話相手は会ったこともない人が殆ど、そしてほぼ匿名。
さとり: LineやFaceBook等リアル系SNSが一般化してきて、ネットデビュー時の接続相手はリアル友人が大半だが、
 逆に既読疲れ等が発生し、これらを避けるように匿名SNSに流れてきている。

そして俺らゆとり以前の世代は「昔のネットはー」という幻影に囚われてそこを目指すわけだが、
これはゆとりがいる限り無理だ。作り上げるより壊す方が断然簡単だから。
実際、俺らがこっちで質問スレを復活させ、俺らが回答することにより質を上げたら、
ゆとりがWeb板から全員移住してきて潰したのは事実だ。
それで俺を荒らし扱いなのだから、お前らゆとりは全く腐ってる。
ゆとりに反対する限り荒らし、という極めて単細胞なゆとり独裁主義でしかない。
ゆとりがイナゴ行為を全く悪びれずに行う状況では、ゆとりが存在する限りゆとり標準以上の質を保つことは出来ない。
0363デフォルトの名無しさん2019/07/24(水) 22:43:53.77ID:MCkLbdZJ
ところがさとりはむしろ俺ら旧世代よりももっと監視が厳しい状態でネットをやってる。
だからゆとりみたいに完全にたがが外れきって振り切っている感じが微塵もない。
そして死ね死ね言い慣れた俺に対しても疑念を持つわけだ。
そんなこと言っちゃいけません、と「正しく」教育されてるから。まあこれは悪いことではないが。

結果的に、俺はゆとりとは組めないが、さとりとは組める。俺からするとさとりは常識の範囲だからだ。
逆に、さとりにとっては俺も十分にゴミかも知れないが、それはさとりが決めることだ。
一応俺は正論を吐いているつもりだし、馬鹿な発言がなければ俺が叩くこともない。
勿論そうでなければ俺を叩くのも自由だし、好きにすればいい。

俺はこの状況を危機的だと見て、ゆとりを排除できる掲示板を準備中だ。
実際にはゆとりを排除ではなく、隔離に近いが。
システムとしては、今で言うと8chかredditが近い。
問題があればmoderatorが勝手に判断してBANを行う。
そしてそのmoderatorはコテハン(に近い物)ではあるが匿名だ。
勿論ゆとりである可能性もあり、その場合は多分俺がBANされるわけだが、それも自由だ。
そういう掲示板を準備している。
といってもあと数年かかりそうだが、さとりが社会人デビューし始める頃には出来ればいいなと思っている。

ゆとり死ね
0364デフォルトの名無しさん2019/07/24(水) 22:44:34.68ID:MCkLbdZJ
実際、有効な議論の為に誰をBANすべきか、というのは極めて難しくて、
ここで俺がどれだけ説明したところでそのレベルに達してない奴には理解も納得も出来ないと思う。
だから俺は、それに対しての解、「結果的に有効な議論が出来たBANを行った者が良いmoderator」を導入する。
単純には、俺をBANした場合は俺はもうその板に書けなくなる。
結果、俺の有効レスも駄レスも含めて全部失う。
そしてそれが正しかったかどうかはユーザー、つまり参加者が判定する、というものだ。
そのBANによりその板の質が上がれば、その板は賑わうし、逆なら過疎る。
結果、上手いmoderatorがいれば、
コミュニティが健全であれば結果的に全く意味のない発言をする連中=ゆとりが排除される、というわけだ。
そしてユーザーが他板の同種スレに移動するコストをほぼゼロにしておけば、
BANを濫用して板の質を落とすmoderatorは板ごと過疎化して殺せる。
これでmoderatorとユーザーの相互BANを達成する。(この仕組みが8chやredditにはない)
結果的には昔の(今もかも?)ニコのコメのフィルターレベルみたいなことをやろうとしている。
そして逆に俺自身が隔離される可能性もあるわけだが、
その場合は、俺が間違っていたという事実を突きつけられただけであり、それもありだ。
興味がある人はちょっと心に留めておいてくれ。
もっとも、起動するときにここで告知するかどうかはまた別問題なのだが。

ゆとり死ね

一応具体的に言っておくと、俺なら>>351を議事妨害行為としてBANする。
ただしここでやっているような説明はなし、いきなりBANして終わりだ。
BAN基準はリアル議論基準準拠だ。
説明は常に時間の無駄だからやらない。
分かる奴は説明無しでも分かるし、分からない奴にいくら説明しても理解されることはないからだ。
ナイスBANと思う奴は俺の板に書けばいいし、
BANに疑問を持つなら俺の板に書かなければいいし、或いは各自の板では俺をBANできる。
そういう掲示板だ。
なお海外には似たようなものなら実は既に沢山あって、既に言ったとおり、有名どころは8chやredditになる。
日本は5chとふたばしかなくて、また、「それしかない」と思いこんでいること自体がかなり大問題だ。
0365デフォルトの名無しさん2019/07/24(水) 22:45:21.98ID:MCkLbdZJ
根本的な問題は、俺達とさとりは「匿名掲示板って酷いな(リア友とのネット関係と比べて)」なのだが、
ゆとりは「ネットは好き放題出来るもの。匿名で当たり前だし、これが普通」と思いこんでいるところ。
ただ俺にはこれを転換させるだけの方策はない。だからゆとりをBANするしかない、と思っている。
それで、ゆとり流幼稚園と、非ゆとり方式で、どっちが生産的か勝負だ、というわけ。

ゆとり死ね

前にも同じようなことを言って「プログラム板」と「Web制作板」でやろうとしたが、
前述の通り、ここ5chでやってもゆとりはましな方に常に寄生するので、(自らでは全く改善する気がない)
ましになったと思ったら結局ゆとりが大量に押し寄せてきて駄目になる、の繰り返しだった。
だからもう、ゆとりが押し寄せて来れない構造の所を作るしかない、という判断だ。
そしてインターネット上ではそれはBANしかない。
賛同する奴は噂が流れてくるのでも待っていてくれ。
ゆとり以前の世代は大歓迎だ。そしてさとりも多分歓迎出来る。
俺より上手いmoderationが出来る奴がいれば、結果的に俺はそいつに従うことになる。
もしかするとさとりにはこのレベルの奴が居るのかも?というのが今の俺の見立てだ。
0367デフォルトの名無しさん2019/08/05(月) 00:01:27.38ID:c0j9QYKj
javascriptでクラスを使いたいんですが
例えば
var A = function(name){this.name = name;}
A.prototype.hello = function(){setTimeout(function(){console.log("Hello, my name is "+this.name);},1000);}
var a = new A("aaa");
a.hello();// ここでthisがaを指していない
この場合helloの中のsetTimeoutの中のthisがaを指すようにするためにはどう修正すべきですかね?
0368デフォルトの名無しさん2019/08/05(月) 01:52:07.73ID:vYVEyXMY
setTimeoutに渡すcallbackをアロー関数にしてthisが変化しないようにする
0369デフォルトの名無しさん2019/08/05(月) 02:02:06.77ID:c0j9QYKj
ありがとうございます
アロー関数を知らなかったのですがちらっと調べた感じできそうなのでやってみます
0371デフォルトの名無しさん2019/08/05(月) 02:29:15.00ID:YDvnBLwi
アロー関数問題ない環境を対象にするならクラスもclass構文使ってもいい気もする
0372デフォルトの名無しさん2019/08/10(土) 15:33:12.58ID:paQxkeGI
わいはjs4年の実の娘と一緒にお風呂に入って対面座位で抱きしめ合ってベロちゅう唾飲みせっくすしてる。つるぺたとつるまんが気持ち良すぎて抜かずで連続3回中出しした。
禁断を犯した事実が興奮をさらに煽りもう近親相姦は当分やめられない。妻にはもちろん内緒。娘がいて本当に良かった。
0373デフォルトの名無しさん2019/08/28(水) 09:25:40.31ID:cdWL3Y3E
codesandboxが凄い手軽で便利なんだけどクソ重い
これってうちのPenMノートの力不足?サーバ側の問題?
0375デフォルトの名無しさん2020/02/20(木) 14:26:45.24ID:Bj1a9Of3
ブラゲーの自動化をjavascriptでやってみようかなって思ってるんですが
対象のブラゲーはUnityでWebGLを使ってるらしくcanvasオブジェクトの指定した位置をクリックできればできそうなんですが
指定した位置をクリック、はjavascriptでどう書くべきですかね?そもそも書けるんですかね?
0377デフォルトの名無しさん2020/06/14(日) 19:57:42.72ID:irom8koH
正直、JavaScriptはC++使いから見たら死んでる。
ブーストにBIGINTもBIGFLOATもあるから数値計算で秀でる部分が無い。
STLあるから、データ構造で困ることもない。
JsonIOさえあれば、アッパーコンパチなのがC++。

isn't it?
0378デフォルトの名無しさん2020/06/15(月) 04:57:32.55ID:9yVLzu3w
単にお前のユースケースにマッチしてないってだけじゃね
その思想だとC++(あと数値計算的にFortranか?)以外の全ての言語が死んでそう
0380デフォルトの名無しさん2020/07/20(月) 09:32:03.88ID:DCmbCo2x
>>377
おじいちゃん、C++のスレに行くといいよ
0381デフォルトの名無しさん2020/07/27(月) 17:33:48.62ID:2I3xUck9
誰か珍しいコード書いてくれや!!
0383デフォルトの名無しさん2021/10/12(火) 20:51:18.90ID:BSPiPdYi
C/Javaから入ってC++、C#、Pythonなんか今まで触ってきて初めてJavascriptの勉強始めたんだけど難しすぎない…?
前評判聞いてもっとちゃちいとか初心者向けとかそういう想像してたんだけど全然違った
これまで経験してきた言語とそもそも考え方とか概念が違いすぎて理解できないことが多すぎる
0384デフォルトの名無しさん2021/10/12(火) 20:57:40.52ID:NdoU3Kdh
やりたいことだけピンポイントで勉強したらいいよ
今となっては出来ることや構文やAPIが増えすぎてすっかり複雑になっている
0385デフォルトの名無しさん2021/10/13(水) 21:05:02.48ID:Nhowqva4
デフォルトで色々非同期(特にコールバック設計のAPI)だとかイベント駆動になってるってことじゃないの?
それはもう慣れでしかないが

少なくともC++より難しいなんてことはあり得ない
単にAPIのデザインに慣れてないだけ
0387デフォルトの名無しさん2022/04/15(金) 12:40:29.47ID:cVoviCi/
PromiseとPromiseじゃない値を受け取る関数を定義したいのだけどどうやって判定すんの?

async function get(x) {
if ( isPromise(x) ) return await x;
else return x;
}

isPromiseの完全な実装方法を知りたい
ググるとオブジェクトがthenを持ってたらPromiseだぜ!なんてジョークみたいなコメントが出てきて困った
0390デフォルトの名無しさん2022/10/28(金) 12:57:59.55ID:o0iPkyPv
プログラミングはわからないことを検索して調べるってのが基本になるから
入門書とか入門サイト見つつわからない部分は個別に検索して調べるとかでどんどん知識広げていく

そういうアプリを使ってもいいけどそれ1つだけで習得できるとは考えないほうが良いかな
0391デフォルトの名無しさん2022/10/28(金) 13:03:17.92ID:PS6Qpvzx
ありがとうございます
別の入門書を読んでるんだけど、理解は出来るんだけどすぐに忘れますね
経験を積んで覚えていくしかありませんね
0394デフォルトの名無しさん2023/10/08(日) 03:47:17.38ID:nfkwaEZK
まずChatGPTで実現したいお題のコードを大まかに書いてもらって、それの間違ってる箇所を指摘していくと、最終的に正常に動作するコードが書けるな
AIってこういう風に使うんだということが理解できた
レスを投稿する


ニューススポーツなんでも実況