• 締切済み

JavaScriptの補完機能について

プログラミング初心者です VSCodeでJavaScriptを始めたのですが特定の状況では補完機能が働きません 例えば以下の様なコードではvalues.と打つとfilterを補完して欲しいのですが関数内ではそれができません これはJavaScriptの仕様なのでしょうか?それともVSCodeの設定などで改善できるものなのでしょうか? function isEven(values){ return values.filter(x => x % 2 == 0); } console.log(isEven([0,1,2,3])); 他のエディタではできるという場合ならそちらも教えてください よろしくお願いします

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

function isEven(values){ return values. まで入力した時点ではvaluesが配列か否かを判断できる情報がないので、補完できないのはごく自然なことだと思います。

gotokin21
質問者

お礼

> valuesが配列か否かを判断できる情報がないので、補完できないのはごく自然なことだと思います。 Python PHPなどの他の言語ではごく当たり前にできることなのでごく自然という認識は間違ってますが 素人っぽい回答なので信用できる情報なのかは定かではありませんがJavaScriptではできないということなのですね

関連するQ&A

  • javascriptのコードについて

    以下のコードなのですが、 エンクロージャー関数の ローカル変数hogeをさらに、エンクロージャー内部で定義された 関数ででクロージャーとして保持させたいメソッドのコードですが var Method = function (){ var hoge = "初期値"; var getter = function (){ return hoge; } var setter = function (param){ hoge = param; return hoge; } return {"set" : setter,"get" : getter} } var obj = Method(); console.log(obj); console.log(obj . get()); obj.set("初期値変更"); console.log(obj.get()); obj . set("更に変更"); console.log(obj.get()); この場合、メソッドの返り値として、一般的な文献に乗っている関数(関数オブジェクト)を返すのではなく オブジェクトリテラルとして返しています。 この場合でも、動きとしてはクロージャーの動きをしているのでhogeという変数の保持はできているっぽいんですが クロージャーって関数内で定義された関数であれば、どういう返り値の返し方でも クロージャーになるのですかね? また、この方法は、一般的にjsで関数コンストラクタ呼び出しをしてインスタンスを作る際privateメンバを実現する方法として紹介されていますが、 これはクロージャーとして生成するたんびに内部の変数を保持するためメモリ食い虫になるらしいのですが まず間違いなく、このクラス(便宜上そう呼びます)のインスタンスはひとつしかつくることはない!!という仕様だとしても いけないのでしょうか? というかもう現状javascripのバッドノウハウ的なものになっているのでしょうか?

  • 【javascript】プロパティ?オブジェクト?

    皆様あけましておめでとうございます!! 新年早々質問させていただけたらと思います。 ただいまオライリーのjavascriptのサイ本第六版を読みながら勉強してるのですが、 以下の部分がどうしても理解できません・・・ range.methods = { includes: function(x) { return this.from <= x && x <= this.to; }, foreach: function(f) { for(var x = Math.ceil(this.from); x <= this.to; x++) f(x); }, toString: function() { return "(" + this.from + "..." + this.to + ")"; } }; var r = range(1,3); // Create a range object r.includes(2); // => true: 2 is in the range r.foreach(console.log); // Prints 1 2 3 console.log(r); // Prints (1...3) 本にmethodsプロパティにinculedsやforeachを格納すると書いてあります。 2行目:includesや3行目foreachはプロパティでプロパティに関数を設定することでr.inculdes(2)で関数として呼び出しているんですよね!? なので2行目:includesや3行目foreachはプロパティという認識で間違いないでしょうか? ということはプロパティのなかにプロパティをを設定してるという形になるのでしょうか? どうもしっくりこなくて悩んでおります。 よろしくお願いします。

  • JavaScript の引数について教えて下さい。

    ある教材を参考に以下の★SCRIPTを記述するとconsoleで以下の画像のような結果になるはずなのですが★CONSOLEのようにしか表示されません。 何度か見直したのですがタイプミス等はないようです。 下の★SCRIPTの記述に何か間違いがあるのでしょうか? 自分ではわかりません。 また今は「引数」の項目について学習しています。 ここに出てくる「$」にはどういう意味があるのでしょうか? 超初心者です。わかる方いらっしゃいましたら宜しくお願いします。 ★SCRIPT <script> 'use strict'; function showAd(message){ console.log('------------------'); console.log('------- ${message} ------'); console.log('------------------'); } showAd('Header AD'); console.log('Tom is great!'); console.log('Bob is great!'); showAD('AD'); console.log('Steve is great!'); console.log('Rich is great!'); showAD('Footer AD'); ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ★CONSOLE ------------------ javascript.html:13 ------- ${message} ------ javascript.html:14 ------------------ javascript.html:21 Tom is great! javascript.html:22 Bob is great! javascript.html:12 ------------------ javascript.html:13 ------- ${message} ------ javascript.html:14 ------------------ javascript.html:26 Steve is great! javascript.html:27 Rich is great! javascript.html:12 ------------------ javascript.html:13 ------- ${message} ------ javascript.html:14 ------------------

  • javascriptの呼び出し方

    「下記を組み込んで使って」知り合いより依頼を受けました。 そこで、下記処理を呼び出す場合、 var API = new GETAPI(); とすると、search.login/search.get/search/logout 全部callされる事になります。 それをここに呼び出す方法としてはどうしたらいいかご教授下さい。 例えば、search.loginだけを呼び出したい。 ======================================== (function(){ window.GETAPI = function(){ var search = this; search.login = function(param){ console.log("login"); }; search.get = function(param){ console.log("get"); } search.logout = function(param){ console.log("get"); } return search; } }()); ======================================== 自分のイメージとしては上記処理ではなく、 下記処理で知り合いから頂くものと思ってたので、 ここに呼び出す事は可能だと思っていました。 ========== GETAPI.prototype{ 'login' : function(param){ }, 'get' : function(param){ }, 'logout' : function(param){ } } ========== 基本的なjavascriptの質問になってしまいますが、 宜しくお願い致します。

  • javascriptでオブジェクトのメソッドを使う

    JavaScriptでnewでオブジェクト化したクラス(?)のメソッド、フィールドを利用する方法を教えて下さい。 javascriptにもオブジェクト化という考え方があると聞いたのですが、 例えば、Javaでいうsetter getterのようなメソッドを作り、使用することはできるのでしょうか? 下記のようなコードを実行したところ Uncaught TypeError: Object #<mousePosi> has no method 'setPara' というエラーが出てしまい、setParaというメソッドはない。と言われてしまいます。 しかし、mousePosi()をオブジェクト化することはできているようなので、 setParaとgetParaを使えるのではないかとおもいました。 どなたかアドバイス下さい。お願いします。 ------------------------------------------------------------------------------------------------- (function LineMain() { console.log("マウスの位置座標を表示"); // console.log("X座標=" + mymouse.x + ",Y座標=" + mymouse.y); //マウスムーブでeventControlを呼び出し addEventListener("mousemove", eventControl, false); function eventControl(event) { var event = event; var myMousePosi = new mousePosi(); myMousePosi.setPara(event); // console.log("X座標=" + obj.getMouse().x + ",Y座標=" + obj.getMouse().y); } function mousePosi() { var paraMouse = { x : 0, y : 0 }; function setPara(event) { this.paraMouse.x = event.x; this.paraMouse.y = event.y; } function getPara() { return this.paraMouse; } } })();

  • javascript map filter

    javascriptのmap、filterについて勉強中なのですが、質問です。 var aaa=['a','b','c','d','e'] aaa.map(function(e){return e.length;}).filter(function(e){return e%2==0;}); このコードの結果は[4,4]と出力されるそうなのですが、 経緯がわかりません。 私が思うに、 map(function(e){return e.length;}) で要素のそれぞれのindex値、[0,1,2,3,4]に変換、 filter(function(e){return e%2==0;}) で変換したものの中から2で割ってあまりが無いものを抽出し、 [2,4] が出力されると思うのですが、違うようです。 正しい経緯を教えていただけないでしょうか。 よろしくお願いします。

  • javascriptの関数につきまして

    javascriptの関数につきまして javascriptの関数につきましての質問です。 Daycheck()関数 function Daycheck(year, mon, day){ maxDayOfMonth = Array( 31,29,31,30,31,30,31,31,30,31,30,31 ); if (year < 1901 || 2200 < year) return false; if( mon < 1 || mon > 12 ) return false; if( day < 1 || day > maxDayOfMonth[mon-1] ) return false; if( mon != 2 ) return true; if( day < 29 ) return true; if( ( year % 4 ) == 0 && ( year % 100 ) != 0 ) return true; if( ( year % 400 ) == 0 ) return true; return false; } というサンプルソースを見たのですが、Daycheck()の中のif( mon != 2 ) return true;とは2月以外が選択されていた場合trueを返す。 つまり、2月は選択できないということでしょうか? プログラミングについて詳しい方がいらっしゃりましたらご指導お願いします。 宜しくお願い致します。

  • FLASHからjavascriptへ、

    // JavaScript Document initDocument = function(){ Tokyo_Click(); } Tokyo_Click = function(){ place = "^東京都"; ds1.filter(myFilterFunc); } Gunma_Click = function(){ place = "^群馬県"; ds1.filter(myFilterFunc); } Saitama_Click = function(){ place = "^埼玉県"; ds1.filter(myFilterFunc); } var myFilterFunc = function(dataSet, row, rowNumber) { if (row["staff"].search(place) != -1){ return row; }else{ return null; } } var Region; var ds1 = new Spry.Data.XMLDataSet("xml/data.xml","pages/page",{useCache: false ,loadInterval : 300000}); initDocument(); ------------------------------------------------------------------- というjavascriptをindex.htmlで外部フォルダから読み込んでます。 FLASH8でボタンを作りアクションスクリプトを on (press) { getURL("javascript:Gunma_Click();"); } と書いてTokyo_Click = function()やGunma_Click = function()を呼び出そうと思ったのですがだめでした。 この場合ボタンにはどんなアクションスクリプトを書けばよいのでしょうか?

  • javascriptのreturnがわからない

    javascriptのreturnとは? return、あるいは返すという概念がよくわからず困っています。 教えてgooの、下のURLより、 返すというのが、「借りていたものを返す」ではなく、 「リクエストされた質問に対し返答する」という意味での「返す」であることであり、 プログラミングでは、expression(=処理?)の結果を返すことだという理解をしています。 http://okwave.jp/qa/q2574681.html しかし、返された処理結果は、どこに返されるのでしょうか? 下のコードを例に私なりの解釈をします。 function menseki(r){ var m = 3.14 * r * r; return m; } var m = menseki(5); http://www.ajaxtower.jp/js/function/index4.htmlより javascriptの下のコードでは、ルーチンにたいして、サブルーチン(=function menseki)があり、 変数mは、関数内に有るため、スコープがローカル(=変数内)にあります。(あってますか?) このままだと、変数mは、サブルーチンの処理が終わった後、メモリから「mは3.14*r*rだよ」という情報が消されてしま宇野だともいます。 (javascriptはgarbage collectorがあり、また関数内の変数はローカルなので、関数内でしか使えないため。) でも、この変数mを、中身(=3.14*r*r)を維持したまま、関数外で使いたいときに、 変数mのreturnをすることで、メモリに 「mは3.14*r*r。 呼び出し元は、一番上のルーチンだから、実質的にはグローバル変数になります。」 とおしえてることでしょうか? また、呼び出し元は何を基準に決定されるのでしょうか?

  • JavaScript setTimeout

    失礼します現在ボタンがクリックされた場合、指定秒数をカウント後console.logし、再度ボタンがクリックされた場合秒数を初期化して、再度カウントするようにしたいのですがうまくいきません、何卒ご教授お願い致します。 <td align="center"><input type="button" value=" 1 " onclick="myValue(1)" style="width:100%; height:45px;"></td> <script type="text/javascript"> function hoge(){ //console.log("piyo"); } function myValue(myData){ setTimeout(hoge(),3000); } </script>

専門家に質問してみよう