質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • JavaScript

    20903questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

javascript配列"[";return val,...,variable+"]"の構文についての疑問

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 168

John_doe_774

score -1

 前提・実現したいこと

やりたいことは、webPage上で、csv→jsonに変換するサイトがあるので、それをwebAPIとして無理やり使いたいがためにブックマークレットを使います。
そしてcsvを読み込んでtextareaに入力することがしたいです。
http://tools.nissuk.info/csv-json/
上記のページになります。
その中で、参考にしたサンプルプログラムに分からない点があったので、質問させてもらいました。

 発生している問題・エラーメッセージ

"[";return  e.name&&(t+=e.name+": "),e.id&&(t+="#"+e.id),e.classList.length&&(t+="."+String(e.classList).replace(" ",".")),t+"]"
の記述が分かりません。

 該当のソースコード

//function(){( function(){3_e関数 3_t関数 2_a関数 1_nオブジェクトa(n)} )()
javascript:void function() {
    (function() {
    //オブジェクト初期化子
    var e= {textarea:"テキスト\nエリア", 
        input: {
            text:"テキスト",
            search:"検索テキスト",
            tel:"01234567890",
            password:"Password1234",
            url:"http://abc.def.ghi",
            email:"mail@abc.def",
            month:"2016-01",
            week:"2016-W01",
            date:"2016-01-01",
            time:"12:34",
            "datetime-local":"2016-01-01T12:34",
            number:"",
            range:"",
            color:"#2477A0"
        }
    },
    t=function(e) {
//element
//<tag>のname属性、id属性、classlist区切り文字を.に
//AND expr1(f) expr2(expr1:t)
        var t=
        "[";return  e.name&&(t+=e.name+": "),e.id&&(t+="#"+e.id),e.classList.length&&(t+="."+String(e.classList).replace(" ",".")),t+"]"
    },

//n=nodeElementsList
//e.でオブジェクト参照
    a=function(a) {
        for(var n=a.textareas,r=0;r<n.length;r+=1)
            n[r].value=t(n[r])+e.textarea;
        for(var c=a.selects,r=0;r<c.length;r+=1) {
            var l=c[r].getElementsByTagName("option");
            l.length>0&&(c[r].value=l[l.length-1].value)}
        for(var s=a.inputs,r=0;r<s.length;r+=1)
            switch(s[r].type) {
            case"checkbox":
            case"radio":
            s[r].checked="checked";break;
            case"text":
            s[r].value=t(s[r])+e.input[s[r].type];break;
            case"range":
            case"number":
            var i=e.input[s[r].type];
            s[r].value=i?i:s[r].max;break;
            default:e.input[s[r].type]&&(s[r].value=e.input[s[r].type])
            }
        },
//text[0],text[1] select[0] input[0]
    n= {
        textareas:document.getElementsByTagName("textarea"),
        selects:document.getElementsByTagName("select"),
        inputs:document.getElementsByTagName("input")
    };
        a(n)
    })()
}();

 補足情報(FW/ツールのバージョンなど)

参考元※ http://blog.s0014.com/posts/2016-08-17-js-dummy-input-form/

csvの読み込み自体はtextareaのidを取って、e.value="csvの中身"としてfilereadに関連したメソッドを使えば出来るかなと考えてます。
単純に、そのページをhttpで読み込むだけでは出来ないことが分かっているのでその方法を取りました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

おそらく、何かのツールで圧縮したらこうなったのでしょう。

  • &&は前半がtrue相当の場合だけ後半を処理する
  • ,は前を計算してから後を計算して、後を返す演算子

ということに注意して展開すれば、以下のようになります。

var t="[";
if(e.name) t+=e.name+": ";
if(e.id) t+="#"+e.id;
if(e.classList.length) t+="."+String(e.classList).replace(" ",".");
return t+"]";

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/18 14:36

    "[";return e.name&&,...,t+"]"
    いきなり;returnと来ていたので、困惑していたのだすが
    ,は演算子という説明があったので、文字列の後だけセミコロンが付き、
    だから、;returnとなるんですね。
    説明が順を追っていて分かりやすかったです。

    キャンセル

+1

そのコードはブックマークレット用にminify(コードの意味をそのままに圧縮してサイズを減らす)されているので、素人も玄人も読めないものになっています。

幸いにして参考サイトの一番下にminifyしていないコードが載っているので、まずそっちを参考にしてもう一度やりなおしてみてください。

質問するならそれから。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/18 13:52

    質問を書いているときに、リンクを張り終わったとき気づきました・・・
    すみません、参考になります。ありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • JavaScript

    20903questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。