Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
![JSにおける [] == ![] がわからなかったので、true に至る道を辿ってみました。 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/7fcd1de9f8c2ebd527d053f2fb99ba3d45c8edae/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkY0NTgyMiUyRjZhNmZkNzk1YTdhYzBlZjQ0ZmU1OGY2OTdiY2UwNzczYzc4MzBjMTAlMkZ4X2xhcmdlLnBuZyUzRjE2MTg3MjkwMTQ_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmZtPXBuZzMyJnM9Y2ExYzEwNTQxMjZmZTZjYzljMzViZjkyYmVhYjA1YmM%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D0d8a81c4edac1f64e5a019b88794a93c%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9SlMlRTMlODElQUIlRTMlODElOEElRTMlODElOTElRTMlODIlOEIlMjAlNUIlNUQlMjAlM0QlM0QlMjAlMjElNUIlNUQlMjAlRTMlODElOEMlRTMlODIlOEYlRTMlODElOEIlRTMlODIlODklRTMlODElQUElRTMlODElOEIlRTMlODElQTMlRTMlODElOUYlRTMlODElQUUlRTMlODElQTclRTMlODAlODF0cnVlJTIwJUUzJTgxJUFCJUU4JTg3JUIzJUUzJTgyJThCJUU5JTgxJTkzJUUzJTgyJTkyJUU4JUJFJUJGJUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgxJUJGJUUzJTgxJUJFJUUzJTgxJTk3JUUzJTgxJTlGJUUzJTgwJTgyJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9MmZhM2NlZGRiM2ZlYzdkZDg4NGQ0ZDI2NjRmOTVlN2E%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBtb2NoaXp1a2lrb3Rhcm8mdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz02MDQ3MTU1ZmYwYTA3ODk4MTg2M2E2NmI0YTQwYWI5Yw%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3De7eeb3d3feb831457139864995524e32)
A great article came out yesterday: Data-binding Revolutions with Object.observe() If you didn’t read it yet, go read it then come back here. Ok the basic idea of that article is that you can do things like this var model = {}; // Which we then observe Object.observe(model, function(changes){ // This asynchronous callback runs and aggregates changes changes.forEach(function(change) { // Letting us
Strict Mode ECMAScript 5 には Strict Mode という仕組みがあり、Strict Mode では様々な機能(誤解の元となる機能、危険な機能)が制限されています。Strcit Mode になると関数コード内で this === undefined となり、this でグローバルオブジェクトを参照できません。 "use strict"; // Strict Mode を宣言する (function () { // グローバルコードで Strict Mode を宣言すると下位の関数コードも Strict Mode になる console.log(this); // undefined console.log(window); // [object Window] })(); ブラウザの JavaScript では window がグローバルオブジェクトですが、No
console.log(+[]); // 0 console.log(+[3]); // 3 console.log(+[null]); // 0 console.log(+[undefined]); // 0 console.log(+["3"]); // 3 console.log(+[1,2]); // NaN console.log(+[true]); // NaN console.log(+[false]); // NaN なぜこのような処理になるのか、JavaScriptの仕様書(ECMA Script Specification 5th)から説明してみましょう。 まず最初、単項+演算子(Unary + Operator)を評価する際に、ToNumberを呼び出すのは前述したとおりです。仕様書の(11.4.6)に書かれています。ではToNumberとはどのような処理でしょうか。
NodeListやHTMLCollectionを配列(Array)に変換する方法の一つに、Array.prototype.sliceを使う方法がある。 var array = Array.prototype.slice.call(document.getElementsByTagName('A')); でも、最近の実装であればArray.applyもその用途に使える。 var array = Array.apply(null, document.getElementsByTagName('A')); ES3ではFunction.prototype.applyの第二引数には配列(Array)かargumentsしか取れなかったけど、ES5でその制限が緩和され、NodeListなどの array like オブジェクトも渡せるようになった。 なお、IE8以下ではどちらの方法でもエラーになるので
Recently, the lightning talk “Wat” by Gary Bernhardt pointed out an interesting JavaScript quirk: You get unexpected results when you add objects and/or arrays. This post explains those results. The general rule for addition in JavaScript is simple: You can only add numbers and strings, all other values will be converted to either one of those types. In order to understand how that conversion work
スタックトレースの取得 (callee/caller/argumentsの利用) JavaScript (in 『JavaScript 第3版』) 呼び出された関数の中では、arguments プロパティを利用できる。arguments は実引数を保持している。 以下コード例では、「a, b, c」が仮引数、「5, 1, 9」が実引数になる。 function max(a, b, c){...} max(5, 1, 9); arguments のプロパティを手繰り、呼び出し階層を求めることができる。 プロパティ関連図は以下。IE 6.0、Firefox 1.0.6で確認を行なった。 概念的には以下が成り立つ(IEでは動作もする)。 ok(arguments.caller == arguments.callee.caller.arguments); ok(arguments == argum
EcmaScript5でStrictモードが策定され、Firefox, Google Chromeなどのブラウザで使えるようになってきました。 *1 PerlのStrictプラグマみたいに、危ない操作を仕様とすると怒ってくれるものらしい。ちなみに今は no strict プラグマはない様子。 詳しくはここを参照。 http://dmitrysoshnikov.com/ecmascript/es5-chapter-2-strict-mode/ で JSではarguments.callee.callerってのを使って呼び出し元の引数を参照できるんですが、 Strict-modeでは使えません。 "use strict"; // この書き方はstrict-modeでエラー arguments.callee.caller.arguments 使えないなら引数を渡すのがよさそうかなぁ。こんな感じ。
Yoshiaki Kawazu🐸ずん @kawaz これ軽くググっても理由がわからないんだが何で危険なの?>「arguments.calleeの使用が、ECMAScript 5のStrictモードがサポートしていないことからもわかるように、危険なこと」/無くてもまぁ困らないけど理由を知り… http://t.co/I9sPoAv0 2011-11-18 21:18:59 koichik @koichik @kawaz それらは Good Parts に書いてないので、使うとダグラス様がマシンガン乱射して危険だからです。というか、caller はそもそも ECMA-262 で規定されたことがないとか、callee 使うくらいなら関数に名前つけろとか。 2011-11-18 21:38:35
Why was the arguments.callee.caller property deprecated in JavaScript? It was added and then deprecated in JavaScript, but it was omitted altogether by ECMAScript. Some browser (Mozilla, IE) have always supported it and don't have any plans on the map to remove support. Others (Safari, Opera) have adopted support for it, but support on older browsers is unreliable. Is there a good reason to put th
JavaScript: 世界で最も誤解されたプログラミング言語(2001年) JavaScript: The World's Most Misunderstood Programming Language http://d.hatena.ne.jp/brazil/20050829/1125321936 2012年未だ誤解されているプログラミング言語JavaScript 嫌われている"JavaScript"とは何か? ECMAScript3 13年前・前世紀(1999年)の言語仕様 IE6 11年前(2001年)のランタイム 嫌われている"JavaScript"と同世代の各言語のバージョンは? Python2.1 Ruby1.6 Perl5.6 J2SE1.3 現在のJavaScriptはECMAScript5 どの環境で使える? http://kangax.github.com/es5-c
Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation. For the best experience please use the latest Chrome, Safari or Firefox browser. '("Kyoto.lisp Tech Talk #1" . "@taiju") 免責 当スライドで使用するLispコードはGaucheにて評価可能です。また、一部でGauche独自のメソッドを利用している箇所もあります。 当スライドでは、JavaScriptとECMAScriptという名前を使っておりますが、厳密に使い分けているわけではありません。文脈によって、適当
追記 11/9/24 Gistのリンクを本家Wikiに貼ってみました。 11/9/24 log 関数を修正しました。 11/7/10 JSON.stringify の第二引数 replacer について、補足しました。 11/7/14 os0x さんの指摘を反映しました。 String.trimRight、trimLeft は ECMA Script 5 非標準です。 JSON.stringify の第3引数には"\t"などの文字列も渡せます。 JSON.parse の第2引数 reviver について補足しました。 Array.prototype.forEach の第2引数 について補足しました。 "use strict" 時の Object.freeze 等の挙動について補足しました。 「ECMA5 というのはちょっとおかしな略し方」について補足しました。 タイトルを修正しました。(旧
setTimeoutは、実行された時間より、指定されたミリ秒待機して実行します。ブラウザから提供されているAPIであり、ECMAScriptの仕様の範囲外です。JavaScriptのsetTimeoutは、ブラウザの実装を知っていると広く応用の効く命令となります。 待機してから実行する命令にはsetIntervalとsetTimeoutがありますが、setIntervalは使いづらいので特別な理由のない限り使わない方がよいでしょう。例えば var cb = function() { var d = new Date(); document.body.innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); if(d.getSeconds() == 0) { clearTimeout(id); } }; v
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く