アプリ版:「スタンプのみでお礼する」機能のリリースについて

javascript超初心者です。恐れ入りますが、宜しくお願い致します。質問は2つあります。

function sqr(a)
{
return a+"の2乗は"+a*a+"です。";
}

document.write(sqr(2)+"<br>");
document.write(sqr(5)+"<br>");
document.write(sqr(123)+"<br>");




以上のa*aの箇所をa+aにするとsqr(2)の場合4ではなく22になってしまいます。parseIntするのかな?と思いましたが

function内に

parseInt(sqr(a));

としましたが動きません。上記の場合、どのようにすれば4に出来るのかお教え頂けたらと思います。


また、functionの外で

var com=document.write;

com(sqr(2)+"<br>");
com(sqr(5)+"<br>");
com(sqr(123)+"<br>");

と記述してdocument.write()をまとめようと試みたのですが、これも動作しませんでした。どのように記述すればdocument.write()を変数に入れる事が出来ますでしょうか?


以上2点、宜しくご教示願います。

A 回答 (2件)

1番目


演算子の優先順位により、string+number が number+number より優先されるためです。
修正案
return a+"の2乗は"+(a+a)+"です。"; // 括弧で優先順位を変える
または
var answer = a+a; // あらかじめ抜き出す
return a+"の2乗は"+answer+"です。";

2番目
メソッドっぽい関数は「 オブジェクト.関数名() 」の形式で呼ばなければ正常に動きません。
修正案
var com = function(s){ document.write(s); }; // メソッドを呼ぶ関数に変更
少し難しくなりますが、その制限を解除する手口もあります
https://developer.mozilla.org/ja/docs/Web/JavaSc …
    • good
    • 0
この回答へのお礼

ありがとうございます。2つとも問題は解決しました。2つ目のご回答はまだ勉強に至っておりませんので、ちゃんと理解しておりませんが、これから勉強していこうと思います。また、リンクですが、ちょっと難しいですが、折角教えていただいたので何度か読んでみようと思います。この度は重ねてありがとうございました。

お礼日時:2017/01/30 20:27

私のブラウザでは、動作しているので何とも言えませんが、F12キーで確認しながら作ってみてはいかがでしょう。

    • good
    • 0
この回答へのお礼

ご覧頂きありがとうございます。f12キーの機能は初めて知りました。ありがとうございます。

お礼日時:2017/01/30 20:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!