
js判斷undefined 在 コバにゃんチャンネル Youtube 的最佳解答

Search
< 迷惘Genta Mochizawa 簡介在JavaScript 中,有許多數值,在邏輯判斷中,其結果與false 等 ... var falsy = [0, NaN, '', false, null, undefined]; ... <看更多>
方法一:. if(typeof(jQuery) == 'undefined'){. console('yes');. }else{. console('no');. } //方法二:. if(window.jQuery){. console('yes');. } ... ... <看更多>
#1. JS判斷為null或undefined時,轉為預設值為0 | 馬達拉 - 點部落
注意:要同时判断null、undefined、数字零、false 时可使用本法。 var exp = null; if (typeof exp == "null") { alert("is null"); }.
JavaScript 中有兩個特殊資料型別:undefined 和null,下節介紹了null 的判斷,下面談談undefined 的判斷。 以下是不正確的用法:. var exp = undefined;
#3. JS學習之道:JS 中如何判斷undefined 和null | 網頁設計教學
註意:要同時判斷undefined 和null 時可使用本法。 var exp = undefined; if (typeof(exp) == undefined) { alert(“undefined”); }.
#4. [javascript] 判斷變數null、undefined及空值 - camel 's blog
if ( typeof str === "undefined" ). console.log( "str is not exist" );. PS. === 可以辨別型態, == 則會轉型單純比值. 參考資料:.
#5. JS中判斷null、undefined與NaN的方法 - 程式前沿
寫了個str ="s" ; 然後出現Nan,找了一會。 收集資料如下判斷: 1.判斷undefined: var tmp = undefined; if (typeof(tmp) == "undefined"){ ...
#6. JS - 判断空值的方法(undefined、null) - 航歌
在开发中我们常常要进行非空判断,而JavaScript 中有两种特殊数据类型:undefined 和null: null: Null 类型,表示“空值”,代表一个空对象指针, ...
#7. Null & undefined 型態差異- Node.js day 7 - iT 邦幫忙
null, undefined 在本質上差異並不大,不過實質上兩者並不同,如果硬是要比較,建議使用=== 來做為判斷標準,避免null, undefined 這兩者被強制轉型。 var a=null, b; if ( ...
#8. js判断变量是否为undefined - blogcccc - 博客园
JavaScript 中有两个特殊数据类型:undefined和null,下面谈谈undefined 的判断。 js判断undefined类型代码如下复制代码if (reValue== undefined){. alert ...
#9. javascript/jquery判断是否为undefined或是null! - CSDN博客
JavaScript 中有两个特殊数据类型:undefined 和null,下节介绍了null 的判断,下面谈谈undefined 的判断。以下是不正确的用法:var exp = undefined ...
#10. js判斷undefined和null_其它 - 程式人生
技術標籤:jsjavascriptwebmybatishtml js判斷undefined var exp = undefined; if (typeof(exp) == "undefined")
#11. JS 如何判斷undefined - w3c學習教程
JS 如何判斷undefined,js時常遍歷資料時就會顯示undefined typeof 返回的是字串有六種可能number string boolean obje.
#12. 相等比較- JavaScript
切記,這三種判斷必須考慮原型,因為他們在設計上不被考慮為相等。 ... 一般相等是其中一種:當A 是個被模擬 成 undefined 的物件 , null == A 和 undefined == A 會 ...
#13. JS判斷null undefined與NaN的方法 - 程序員學院
js 中判斷null、undefined與nan的方法寫了個str ="s"++;. 然後出現nan,找了一會。 收集資料如下判斷:. 1.判斷undefined: 複製**. **如下:.
#14. JS 判斷是否為null - 碼上快樂
JS 判斷 是否為null .判斷undefined: var tmp undefined if typeof tmp undefined alert undefined 說明:typeof 返回的是字符串,有六種可能: number ...
#15. JS中判斷null、undefined與NaN的方法 - 有解無憂
JS 中判斷null、undefined與NaN的方法. 2020-09-14 06:04:44 企業開發. 1.判斷undefined: var tmp = undefined; if ( typeof (tmp) == "undefined" ){ console.log( ...
#16. js判斷不等於空
➀ js 判斷是否為空. 一般判斷為空有null值、undefined值與NaN值. 判斷undefined: vartmp=undefined ...
#17. js判断undefined类型无效的解决办法_零五网
对前端不是很熟悉,在判断变量是否是undefined类型时想当然的用了下面的方式: //错误方式if (chapter == undefined){ console.log(没有新章节了);} ...
#18. js中null,undefined,false,0,'',[],{}判断方法 - 简书
js 中null,undefined,false,0,'',[],{}判断方法 ... 原始类型(基本类型)包括字符串、数字、布尔、Null、Undefined,按值访问,可以操作保存在变量中 ...
#19. Javascript中undefined和null的差異 - Medium
2. 皆為Falsy Value(Boolean判斷時為false) 3. 皆為原始型別(Primitive Type). 最後還要注意一點: null == undefined 回傳true null === undefined 回傳false.
#20. js 如何一句话同时判断undefined null 空? - SegmentFault 思否
现在我判断变量是否有效是通过如下的方式(也就是undefined null '' 各判断一次): {代码...} 想问下JS 或者Vue 或者ES 中有没有什么方法能一次性 ...
#21. javascript判斷undefined、null、NaN;字串包含等 - 拾貝文庫網
【前端】javascript判斷undefined、null、NaN;字串包含等. ... 這篇文章主要介紹了JS中判斷null、undefined與NaN的方法,需要的朋友可以參考下. . 寫了個str ="s"++; ...
#22. JS判斷物件是否存在的十種方法 - 迪克知識網
JS判斷 物件是否存在的十種方法,js判斷方法是否存在,1樓殺心人if typeof yourfunctionname function else 2樓if typeof undefined.
#23. JavaScript/jQuery判斷變數是否是undefined - ZenDei技術網路 ...
JavaScript /jQuery判斷變數是否是undefined ... var exp=undefinded; if(typeof(exp)=="undefined") { //變數是undefined的處理} typeof 返回的是字元串,有六種 ...
#24. js判斷一個變數或物件是否存在 - 多學網
typeof(i)=="undefined": 未定義//原始js判斷一個id為div的元素是否存在if(document.getelementbyid("div))//jquery判斷一個元素是否存在.
#25. javascript语言中NaN、null、undefined的判断方法 - web教程网
js 的if else判断中包含 undefined null false 0 NAN ""或'' (空字符串)这留个值。其他值都视为 true 。 而最难理解的就是null、undefined、NaN的 ...
#26. JS 判断字符串是否为空 - 腾讯云
从ES6 开始,JS 共有7 种数据类型,分为基本类型和引用类型两大类。 基本类型:String、Number、Boolean、Symbol、Undefined、Null 引用类型:Object( ...
#27. Javascript-判斷是否為陣列的5種方法 - IT人
5 Object.prototype.toSrtring.call(). 當使用該方法判斷其他資料型別時要注意一點是,IE8及IE8以下,undefined和null均為Object,IE9 ...
#28. JS中如何判斷undefined和null - 第一問答網
JS 中如何判斷undefined和null,1樓北京巴卜技術if typeof revalue undefined js中null和undefined的區別2樓夏冰undef.
#29. JS中判断null、undefined与NaN的方法- jQuery - 积木网
JS 中判断null、undefined与NaN的方法. 写了个str ="s"++; 然后出现Nan,找了一会。 收集资料如下判断: 1.判断undefined: <span style="font-size: small;">var tmp ...
#30. JS 【总结】null和undefined区别,你该如何判断正确的类型?
JS 【总结】null和undefined区别,你该如何判断正确的类型? 第一:JS 分为哪两大类型? 基本数据类型:按值访问,可操作保存在变量中的实际的值。
#31. JS 中如何判断-undefined - 千一网络
注意:要同时判断undefined 和null 时可使用本法。 var exp = undefined; if (typeof exp == undefined) { alert ...
#32. JS怎麼判斷一個物件是否為空? - 好問答網
}2、通過json自帶的.stringify方法來判斷,**如下: ... js例項如下:if (typeof(obj) == undefined) 如果typeof(obj) == undefined 為true則該物件不 ...
#33. JavaScript檢查變數是否存在 - 程式開發學習之路
var a = "a";var b = 1;if(typeof(a) == 'undefined'){document.write("a變數不存在<br&a.
#34. js判斷undefined - 台部落
js判斷undefined. 原創 香香爹 2020-02-21 18:39. 使用 typeof() 判斷結果是否爲字符串 "undefined" var exp = undefined; if (typeof(exp) == "undefined") ...
#35. JQ 能不能直接判断不为null和''和undefined? - 百度知道
你可以写好一个方法function,专门判断是否为空为null为undefined,return返回值为true或者false。 然后你在页面中想判断的时候调用这个方法,if如果 ...
#36. js 如何一句话同时判断undefined null 空? - 慕课网
现在我判断变量是否有效是通过如下的方式(也就是undefined null '' 各判断一次): if( (this.$route.query.openid != undefined || this.$route.query.openid !
#37. JS判斷值是否為空 - w3c菜鳥教程
JS判斷 值是否為空,1 typeof用法typeof的運算數未定義返回的就是undefined 運算數為數字typeof x number 字串type.
#38. undefined与null的区别- 阮一峰的网络日志
在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。 var a = undefined; var a = null; ... 这样判断一个值是否存在,就可以用
#39. javascript如何判断一个值是否为null? - html中文网
null:空类型。它是JavaScript五种原始类型(boolean、number、string、null、undefined)中的一种。该原始类型仅有一个值 ...
#40. JS - 判斷id or name 有無存在 - 龍崗山上的倉鼠
JS if (typeof(obj) == "undefined") { alert( "不存在") } else { alert("存在") } 2. JS if (document.getElementById("obj_id")) {
#41. Javascript True / False 判斷列表 - YOSIA
因為一邊寫PHP,一邊寫javascript,因為都算是script等級的語言,所以兩者在寫法上有些相似之處。所以偶而會碰到一些True/False的判定上兩者不太一樣 ...
#42. JavaScript: Truthy? Falsy? | 格物致知
< 迷惘Genta Mochizawa 簡介在JavaScript 中,有許多數值,在邏輯判斷中,其結果與false 等 ... var falsy = [0, NaN, '', false, null, undefined];
#43. 關於null or undefined 的檢查 - 台灣Angular 技術論壇
相信大家都很常遇到關於null or undefined 的檢查,尤其是接受從server回傳回來的資料,更是需要去檢查合法性。 但是大家會覺得,每次檢查時都要寫個判斷式不會過於 ...
#44. Javascript 基礎打底系列(二) - null、undefined、NaN 的差異與 ...
Javascript 這語言有很多特別的地方,除了上篇根據原始值、複合值來 ... 首先,因為null 跟undefined 和NaN 在if 判斷時值都會轉換為false,所以一般 ...
#45. Javascript 中的非空判斷undefined,null, NaN的區別 - 每日頭條
Javascript 中的非空判斷undefined,null, NaN的區別 ... js中的數據類型有undefined,boolean,number,string,object等5種,前4種為原始類型,第5種為 ...
#46. JS中如何判斷null、undefined與NaN
判斷undefined :var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined"); }//判斷null:var tmp = null; if (!tmp && typeof(tmp)!
#47. 在js中怎麼判斷返回的是空值,JS怎麼判斷一個物件是否為空
判斷 a是不是空值,那就. 答可以這樣. if (!a). 因為null和undefined在js裡面都是可以當做false來用的,所以可以直接這麼用if來判斷. js怎麼判斷一個 ...
#48. js中判断变量不为空或null 是否有空格的方法 - 365建站网
return; } //上述内容相当于判断content=、content=null、content = undefined、content=0 判断字符串是否为空var strings = ; if (string.length ...
#49. 超入門JavaScript 邏輯判斷· whyfoobar
[偷米騎巴哥] 20180726 (超入門JavaScript 邏輯判斷) 筆記. tags: 四個壞朋友 偷米騎巴哥 ... 小數點=> true; 負數=> true; 0, +0, -0 (正負0) => undefined => false.
#50. JavaScript 中变量类型的判断- 不忘初心 - 上下求索。
需要判断的东西是在是多啊!除了基本的变量:Boolean、Undefined、Null、Number、String,引用类型Object、Array、Function,还有NaN、Array-Like ...
#51. 如何在JavaScript 中檢查空字串
它演示了在JavaScript 中檢查任何字串的不同方法,無論是填充還是空。 ... javascriptCopy console.log(false === "") console.log(undefined ...
#52. JavaScript 标准内置对象undefined,判断对象是否为空- Docsxyz
JavaScript 标准内置对象undefined,判断对象是否为空. 最近更新时间 2020-11-25 18:26:01. undefined 是全局对象的一个属性。它是全局作用域的一个变量。undefined 的 ...
#53. JS中如何判断null、undefined与NaN - php程序员的笔记
javascript 中如何判断一个变量是否是null,undefined还是NaN呢?下面我们看看具体的判断方法吧。主要是通过typeof 这个方法去判断,typeof 返回的是 ...
#54. js判斷輸入字串是否為空、空格、null的方法總結 - 訂房優惠報報
javascript判斷 欄位,大家都在找解答。 ... 時上面程式碼就無法正常判斷了,下面程式碼是判斷為null的情況varexp=null;if(exp==null){alert("isnull");}exp為undefined ...
#55. JavaScript 判斷變數是否為陣列的方法 - XYZ的筆記本
JavaScript 沒有內建判斷變數是否為陣列的方法,有的人會用instanceof來判斷,但在某 ... 關於JavaScript 的undefined 屬性是否能被覆蓋 - 2013-12-05 ...
#56. 【JS】判断页面是否有jQuery
方法一:. if(typeof(jQuery) == 'undefined'){. console('yes');. }else{. console('no');. } //方法二:. if(window.jQuery){. console('yes');. } ...
#57. 五個小技巧讓你寫出更好的JavaScript 條件語句(翻譯)
尤其當你有很長的判斷條件時,這樣的 Coding Style 很棒(想像一下,你捲軸需要捲 ... 我猜你應該很熟悉下面這段程式碼,因為我們總是在確認 null / undefined 的值, ...
#58. js判断为空Null与字符串为空简写方法 - phpStudy
注意:要同时判断null 和undefined 时可使用本法。 代码如下. 复制代码 代码如下: var exp = null; if (!exp) { alert( ...
#59. undefined 和null 的差別 - Js Tips
typeof variable === "undefined". 你可以判斷一個變數是否為null。 variable === null. 雙等號運算符認為它們是相等的,但是三等號比較時是不相等的 ...
#60. 關於JS型別判斷的思考
寫這篇文章的初衷是來源於 JS基礎問題-型別判斷 ,僅當作鞏固下知識。 ... number • string • boolean • undefined • null • symbol • Bigint.
#61. js如何判斷對象爲空 - Sportsem
js 判斷 數據是否為空. // var a = “”; // var a = ” “; // var a = null; // var a = undefined; // var a = []; // var a = {}; // var a = NaN; ...
#62. Javascript之物件是否為空值的快速判斷 - slashview.com
//先把一些空值的型別灌進去,後面再加一些正常的型別 var falsy = [0, NaN, '', false, null, undefined, true, new Date(), new Object()]; //把這些型 ...
#63. Weird-JavaScript 14:存在與布林、條件判斷與預設值 - Luffy
Boolean(undefined) ; // false ;. 從此可知,我們知道 空字串 、 0 、 null 、 undefined ...
#64. jquery如何判斷陣列是否為空 - 優幫助
如果設定的值比它的當前值大,陣列將增大,新的元素被新增到陣列的尾部,它們的值為undefined。 工具原料:編輯器、瀏覽器. 如何判斷jquery物件是否為空.
#65. Javascript中如何判斷物件的屬性(property)是否存在
但以上其實是一種不嚴謹的判斷方式,因為這樣是表示當屬性不為 null , undefined , "" , 0 , false ,時判斷式才成立。 也有一種常見的誤判方式如下: var ...
#66. js怎麼判斷是否是undefined? - 劇多
可以使用typeof運算子,判斷myobj是否有定義。 if(typeofmyobj=="undefined"). {. varmyobj={};. } 這是目前使用最廣泛的判斷javascript物件是否存在 ...
#67. js判断输入字符串是否为空、空格、null的方法 - 看云
如果有null时上面代码就无法正常判断了,下面代码是判断为null的情况 var exp = null; if (exp == null) { alert("is null"); }. exp 为undefined 时,也会得到与null ...
#68. 彻底弄清JS数据类型判断 - 知乎专栏
由结果可知typeof可以测试出number、string、boolean、Symbol、undefined及function,而对于null及数组、对象,typeof均检测出为object,不能进一步判断它们的类型。
#69. JS判断相等或者不等于(==、===、!=、!==)运算符 - C语言 ...
null 和 undefined 值相等,但是它们是不同类型的数据。在相等比较中,null 和 undefined 不允许被转换为其他类型的值。 示例2. 下面两个变量的值是 ...
#70. 如何在JavaScript中检查empty / undefined / null字符串?
如何判断我是从JRuby还是Ruby运行? 红宝石-Rails 3.0中的f.error_messages · Ruby:继承与类变量一起使用的代码 · regex-如何获取字符串中所有 ...
#71. Re: [問題] undefined null的差別? - 看板Ajax - 批踢踢實業坊
這行後面= null 是無意義的, 因為變數宣告在javascript 有一個動作 ... 如果這不是你要的結果,那可以用obj.message === undefined 來判斷, 但要 ...
#72. [程式開發] Javascript undefined 和null 的差別使用方法
註1:JS中typeof 會有六種值 "number"、"string"、"boolean"、"object"、"function"、"undefined" 註2:第三種判斷方式當a 是null 也也會是true , ...
#73. JS:如何判斷真假值?
false , 0 , 空字串("", 字串長度為0), NaN , null 以及 undefined 是為 false; 其他值為 true. 等於(==)判斷: 兩 object 間的比較只是比較其內部參照 ...
#74. js判断输入字符串是否为空、空格、null的方法总结 - 脚本之家
exp 为undefined 时,也会得到与null 相同的结果,虽然null 和undefined 不一样。 注意:要同时判断null 和undefined 时可使用本法。 代码如下. var exp = ...
#75. JS中“is not defined” 如何判断defined - JSON在线
访问变量的属性就会提示 is undefined 就是这个变量 so 未定义值(类型);. 而 defined 呢,如下:. console.
#76. 淺談類型判斷in JavaScript
淺談類型判斷in JavaScript ( image via Franco Folini ) JavaScript 中如何正確的判斷類型, ... 'undefined') { /* 這裡有些可笑的Code …
#77. JavaScript判斷undefined類型的正確方法 - 萬盛學電腦網
這篇文章主要介紹了JavaScript判斷undefined類型的正確方法,相信很多同學在遇到這問題時都會用到錯誤 ... 發現判斷不出來,最後查了下資料要用typeof.
#78. [javascript]判斷一個id或name在頁面裡面存不存在?
[javascript]判斷一個id或name在頁面裡面存不存在? <script> 方法一: if(typeof(aaa)=="undefined") alert("不存在aaa") else alert("存在aaa")
#79. JavaScript 判斷變數是否等於NaN - 碼人日誌
這段程式碼乍看之下理所當然,就像undefined、null 一樣可以直接相等運算,誰知道完全不如預期。 在JS 裡面很有趣,NaN is Number (Not a Number is a ...
#80. js--typeof 和instanceof 判斷數據類型的區別及開發中的使用
js --typeof 和instanceof 判斷數據類型的區別及開發中的使用 ... 確切說,它是判斷一個變量是否為字符串、數值、布爾值或undefined 的最好方式。
#81. Power Automate Desktop RPA教學#28 對Excel 資料進行邏輯 ...
PowerAutomateDesktop #PowerAutomate #RPA #PowerPlatform #Excel 本 ...
#82. Lodash 简介| Lodash 中文文档| Lodash 中文网
Lodash 是一个一致性、模块化、高性能的JavaScript 实用工具库。
#83. 正则表达式– 语法 - 菜鸟教程
正则表达式- 语法正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出 ...
#84. Table表格
JavaScript. import React, { useState } from 'react'; import { Table, Radio, Divider } from 'antd'; const columns = [ { title: 'Name', dataIndex: 'name', ...
#85. JavaScript中的模式匹配
不支持 undefined , NaN , Infinity 等非JSON值。 test("value NULL", () => { let y = match('null') expect(y(null)).toEqual(true) ...
#86. Essential JavaScript: JavaScript 語言核心 - Google 圖書結果
x: 10 y: 20 undefined >使用[]運算子的場合之一,就是當你的特性會包括空白、. ... 你試圖存取時會傳回 undefined,而 undefined 若在判斷是否成立時會被當作 false, ...
#87. 看透JavaScript:原理、方法與實踐 - Google 圖書結果
即只要有名字但是沒有賦值的變量都是undefined類型。 ... 15.instanceof語句 instanceof語句比typeof語句更進了一步,可以判斷一個物件是不是某種類型的實例。
#88. JavaScript技術手冊(電子書) - 第 4-24 頁 - Google 圖書結果
... 若想採用迭代器實作的話: protocol iterator.js function range(start, ... done: false}; } return {value: undefined, done: true}; } ➁ 判斷 i 值傳回迭代 ...
#89. Null dereference fortify
Improved encoding speed on older Intel CPUs. js can dereference a null ... or undefined behavior due to dereferencing a null pointer. [ 9.
#90. JavaScript+jQuery Mobile+Node.js跨平台網頁設計範例教本(電子書)
JavaScript 數值資料型態擁有一些特殊值的字串,通常是出現在數值資料型態發生錯誤 ... 例如:字串或 Undefined Positive Infinity 數值太大超過 JavaScript 正數值的範圍 ...
#91. JavaScript+jQuery +Node.js網頁設計與物聯網應用開發教本(電子書)
Undefined 資料型態 Undifined 資料型態指的是一個變數有宣告,但是不曾指定變數值,或是一個物件屬性根本不存在。 2-2-2 Escape 逸出字元 JavaScript 提供 Escape 逸出 ...
#92. JavaScript網頁設計與TensorFlow.js人工智慧應用教本(電子書)
布林資料型態(Boolean Data Type)布林資料型態只有兩個值 true 和 false,主要是用在第 3 章條件和迴圈控制的條件判斷,以便決定繼續執行哪一個程式區塊的程式碼, ...
js判斷undefined 在 Re: [問題] undefined null的差別? - 看板Ajax - 批踢踢實業坊 的推薦與評價
※ 引述《lunamiou (○苗○烏)》之銘言:
: 看書的前面寫到
: var firstName = null;
這行後面 = null 是無意義的,
因為變數宣告在 javascript 有一個動作叫做 hoisting,
hoisting 就是 interpreter(解譯器) 會先掃過目前的 scope(作用域),
將所有 var 關鍵字抓出來,然後將每個變數宣告建立其專屬空間。
考慮以下程式碼:
function foo() {
bar = 2;
var bar;
console.log(bar);
}
foo(); // print 2
console.log(bar); // will throw an error
在直觀上我們會認為當執行 function foo 時,
因為尚未宣告 bar 就直接賦值,因此 bar 會成為全域變數
而造成可能的全域變數汙染。
但其實不然,因為 hoisting 的關係所以在執行 function foo 時,
變數 bar 會先被宣告並賦值 undefined 再從第一行執行。
另外這個 hoisting 對 function declartion(函數宣告)也是具有作用的
考慮以下程式碼:
console.log(foo()); // print 'bar'
function foo() {
return 'bar';
}
對於寫過 C/C++ 的程式設計師來說,這是違反傳統觀念的,
因為 foo 在被宣告前就被使用,理論上在這裡會噴錯誤,
但因為 hoisting 的關係,所以是可以正常執行的。
回到原題,
var firstName = null;
為什麼我說沒意義,是因為當關鍵字 var 出現時,其後跟著的變數
會在該 scope 開始執行前先被宣告並賦值 undefined,
(注意 hoisting 只對變數做宣告而忽略等號右邊)
此時當解譯器執行到 firstName = null 時
會把 firstName 賦值 null, 可以說這是多此一舉,
除非令 firstName = null 是你有意為之並且有特殊用途的。
考慮以下程式碼:
function foo() {
console.log(bar); // print undefined
bar = 1;
console.log(bar); // print 1
var bar = 2;
console.log(bar); // print 2
}
foo();
console.log(bar); // will throw an error
所以既然變數宣告會被 hoist, 那不如一開始寫的時候就先把變數宣告好,
也就是所有變數在使用 var 宣告時,一律放置在該 function 第一行,
至於要不要在宣告時賦值隨便你。
如果是想釋放變數儲存空間的話,是可以在該變數使用完後
令其等於 null, 這樣 JavaScript 引擎會自動作 garbage collection.
: 上面的程式一般用於初始化變數,表示尚不需要為該變數賦與一個實際值;
: 例如下面的程式,Object的一個實例info_obj的屬性message尚未初始化,
: 那麼,其值就是null:
: var info_obj = new Object();
: info_obj.message;
: alert(info_obj.message == null); //true
當然是 true 阿,這叫自動型態轉換,謝謝
這本書可以丟了,真的
同樣的例子,考慮 alert(info_obj.message === null);
結果就會不一樣了 (茶)
至於 undefined == null 是怎麼成為 true 的,
是有聽說這是歷史共業啦 (感謝 IE),
不過我傾向這是未定義行為,應該要避開。
如上要判斷 object property 是否有值的話,我會建議用
!!info_obj.message
一個 ! 代表 not, 把 true 變 false, 反之亦然
所以上面那行的詮釋為:
info_obj.message 未被賦值,其值為 undefined -> 自動型態轉換為 false ->
not false 轉換為 true -> not true 轉換為 false
當然如果 info_obj.message 本身就有值而且為 0, [], '' ... 等等
會被自動轉換為 false 的值,此時就要有額外的策略去判斷,
但在大部分應用中其實是不影響結果的。
如果這不是你要的結果,那可以用 obj.message === undefined 來判斷,
但要注意 undefined 值有可能會被覆蓋,這點可以透過用 closure 解決:
(function (undefined) {
....
}());
不傳入任何參數的話, undefined 值當然就是 undefined 了 (好饒舌 XD)
類似的用法可以參考 jQuery 原始碼,在此以 2.0.2為代表:
https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.js
可以看到程式開頭即為 closure 形式:
(function( window, undefined ) {
而結尾為:
})( window );
會傳入 window 主要是效能問題,因為加了一層 closure 等於多了一層作用域,
讓 window 成為 local 變數,就可以省下解譯器往上層作用域尋找的時間。
其原因為當解譯器在當前作用域找不到變數時,會往上一作用域搜尋。
: undefined 常數
: undefined常數用於尚未初始化的變數或未初始化的
: 動態物件屬性的特殊值。
: 例如下面的兩個變數都是undefined
: var firstName;
: var lastName;
: 這個跟null有差別嗎?
undefined 與 null 做不嚴謹相等比較 (==) 時為 true,
但做 === 時就不會返回 true,
這絕對是地雷,恭喜你踩到了 \:D/
== 與 === 的差別在於前者會做自動型態轉換,後者不會,
因此若等號兩邊型態不同,後者會直接返回 false.
考慮以下程式碼:
console.log(undefined == null); // print true
console.log(undefined === null); // print false
console.log(0 == false); // print true
console.log(0 === false); // print false
另外要注意一點,undefined 是可以被覆蓋的,也就是說:
function foo() {
var undefined = 10;
console.log(undefined);
}
foo(); // print 10
console.log(undefined); // print undefined
好消息是在新版瀏覽器中 global object (全域物件,在瀏覽器環境中即為 window)
下的 undefined 是 read only 唯讀變數,
但在舊版瀏覽器中要小心全域變數 undefined 是有可能被竄改的。
undefined 的正身便是在全域物件下的變數 undefined,
如果以下敘述執行當下的作用域(包含其上層作用域)裡並沒有對
undefined 賦予其他值,那麼所有 foo === undefined 等價於
foo === window.undefined.
另外為什麼說 undefined 是全域物件的變數而不是全域物件的屬性,
其實當然是可以這樣叫的,所有全域變數都是全域物件的一個屬性。
: 再看下面的程式,user是Object類別的一個實例,該實例的sex屬性如果
: 未初始化,那麼其屬性值為undefined,而非null,因為Object並非動態
: 類別。例如下面的程式:
: var user = new Object();
: alert(user.sex); //輸出undefined
: ----------------------------
: 以上看完還是疑惑,什麼樣的結果是null,什麼會是undefined呢?
: 這本書寫的「類別」是什麼意思,英文的原文會是?
Class
但一般稱此為 Constructor (建構式),比較不常稱 Class,
這是要跟使用 Class 的物件導向語言作區別。
所以說以下程式碼:
function Person(name, gender, age) {
this.name = name;
this.gender = gender;
this.age = age;
}
Person.prototype.sayHello = function () {
console.log('My name is ' + this.name + ". I'm " + this.gender +
". I'm " + this.age + (this.age === 1) ?
' year' : ' years' + ' old.');
}
var jack = new Person('jack', 'male', 20);
Person 稱為 Constructor (建構式) 或稱 Class (類別),
jack 稱為 Instance of constructor Person (Person 建構式的實例),
jack.name, jack.gender, jack.age 稱為 Property (屬性),
jack.sayHello 稱為 Method (方法).
: 另外「動態物件屬性」、「動態類別」的意思分別是?
: 小的才學疏淺,這邊看了幾次還是不太懂,
對不起我也不懂... 麻煩給一下上下文,謝謝 QQ
: 還請大家指教一下,感激感激~~~ <(__ __)>
以上,不知道 console.log 是甚麼也可以用 alert() 代替
延伸閱讀:
https://developer.mozilla.org/en-US/docs/Web/
JavaScript/Reference/Statements/var
( 縮網址:https://ppt.cc/CNFY )
https://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
https://stackoverflow.com/questions/6429225/javascript-null-or-undefined
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.183.96
※ 編輯: s25g5d4 來自: 140.117.183.96 (12/02 12:15)
※ 編輯: s25g5d4 來自: 140.117.183.96 (12/02 12:36)
這算是未定義行為阿... QQ
也是可以寫 obj.message === undefined 啦
但就是怕 undefined 被竄改,這點可以透過 closure 解決:
(function (undefined) {
...
}());
不傳入任何參數,這樣 undefined 就會是 undefined 了~
對,但這點下面也有人提到舊版的瀏覽器是可能被覆蓋的
這我沒看過,詳細希望
--
話說最後一段有個好大的錯誤都沒人糾正...XD
整篇文章我重新修正一遍了,請各位板友有時間再重看一遍並訂正我,謝謝 :D
※ 編輯: s25g5d4 來自: 140.117.183.96 (12/02 18:00)
... <看更多>