フロントエンド経典面接問題:jsデータタイプ

10976 ワード

JavaScriptデータタイプ
万丈のビルの平地から、変化しないでその宗を離れないで、堅固な基本的な功は研究開発者にとってかなり重要で、この文はよくある面接問題から着手して、文字の思惟の導図の形式でJavaScriptのデータのタイプを総括して、たまにこの文を読んで、補欠を調べて、印象を深めることができます.
面接問題の導入
jsにはどのような種類のデータがありますか?基本的なデータの種類は何ですか?
5 s思い出
回答前のナレーション:
     ,     (data)            :
	  (scalar),           (string)   (number),  "  "      。
	  (sequence),                      ,     (array)   (List),  "  ,  "。
	  (mapping),      /  (Name/value),        ,           ,      (hash)   (dictionary),  "  :  "。
json:
	Douglas Crockford            :
		1)           (",")  
		2)      (":")  
		3)        (  )    ("[]")  
		4)      (  )    ("{}")  
	  :"       16800    ,    1600  。       6400    ,    1800 。"
		=>	[
				{"  ":"  ","  ":16800,"  ":1600},
				{"  ":"  ","  ":6400,"  ":1800}
			]
カテゴリ:
      (   、    ):
	  :
		undefined
			  :  “ ”    、   ,      NaN
			  :
				    ,     
				     ,           ,     undefined
				         
				        ,    undefined
		null
			  :  “ ”   、  ,      0
			  :     ,         ,       null
			  :typeof(null)  'object'
		boolean
			  :  “ ”(true) “ ”(false)    
			  :
				       : && ,||
				       : !
				     :===,!==,==,!=
				     :>,>=,  true
					  :
						            ,  JavaScript    64    ,  32   
						          0.1 + 0.2 === 0.3, (0.3 - 0.2) === (0.2 - 0.1) =>  false
				    
					    IEEE 754:
						 1 :   ,0    ,1    
						 2   12 :      (11    )
						 13   64 :      (     )
					  :-(2e53-1) 2e53-1,        
				    
					    :  2e11-1 => 2047
					    :2e1024 2e-1023,      
					    :             1024 => Infinity
					    :             -1023 => 0
					   :Number.MAX_VALUE  =>  1.7976931348623157e+308
					   :Number.MIN_VALUE  =>  5e-324
			   
				   
					35(   ) 0xFF(    )
				     
					123e3  =>  123000,123e-3  =>  0.123
				        
					         21 
					        5 
			  
				   :    0   
				   :   0o 0O   ,     0、    0-7           
				    :   0x 0X   
				   :   0b 0B   
			    
				     
					  :+0 -0    ,        
						1 / +0 => +Infinity
						1 / -0 => -Infinity
				NaN
					  :“   ”(Not a Number)
					  :
						            5 - 'x'  =>  NaN
						         
							Math.acos(2) => NaN
							Math.log(-1) => NaN
							Math.sqrt(-1) => NaN
						0 / 0 => NaN
					    :
						NaN === NaN => false
						[NaN].indexOf(NaN) => -1
						Boolean(NaN) => false
						NaN + 32 => NaN
					    :
						isNaN(NaN) => true
						  :      ,          
					  :
						NaN           
						       ,typeof NaN => 'number'
				Infinity
					  :
						      ,         ,    
						 0    0,  Infinity
						     
					    : 
					isFinite:       ,            ,   Infinity
						isFinite(Infinity) => false,isFinite(NaN) => false,isFinite(-1) => true
			    
				parseInt()
					        
					    
				parseFloat()
					           
			Number      
				toString	         ,       。
				toLocaleString	         ,          。
				toFixed	         ,               。
				toExponential	             。
				toPrecision	            。
				valueOf	     Number         。
		string
			  
				  
				  :   (\)   ,      
					  :
						      :'\251' => "©"
						       :'\xA9' => "©"
						       :'\u00A9' => "©"
				      
					      ,    
					      :Array.prototype.join.call(s, ' ')
				  
					length   
			   
				Unicode
			Base64  
				      ,    
				btoa():          Base64  
				atob():Base64         
				 ASCII   (  )  Base64  :
					btoa(encodeURIComponent(str))
			String    :
				anchor()	   HTML  。
				big()	          。
				blink()	       。
				bold()	         。
				charAt()	          。
				charCodeAt()	             Unicode   。
				concat()	     。
				fixed()	           。
				fontcolor()	             。
				fontsize()	             。
				fromCharCode()	            。
				indexOf()	     。
				italics()	         。
				lastIndexOf()	         。
				link()	         。
				localeCompare()	                。
				match()	               。
				replace()	             。
				search()	             。
				slice()	        ,                。
				small()	           。
				split()	            。
				strike()	           。
				sub()	         。
				substr()	                   。
				substring()	                   。
				sup()	         。
				toLocaleLowerCase()	         。
				toLocaleUpperCase()	         。
				toLowerCase()	         。
				toUpperCase()	         。
				toSource()	        。
				toString()	     。
				valueOf()	             。
	  :
		1)       ,     
		2)           
		3)   typeof      
      (    ):
	  :
		object:
			  :
				(1)“  ”        。
				   、    、   ,     、    、               “  ”。       “  ”,           “  ”     ,           ,  “  ”    。
				(2)“  ”     ,   “  ”(property) “  ”(method)。
				  “  ”,       ;  “  ”,       (      )。  ,          animal  ,“  ”          ,“  ”         (  、  、    )。
			  :
				     (object)
					  
						    
							var o1 = {};
							var o2 = new Object();
							var o3 = Object.create(null);
					  
						     
						     ,         
						         ,     
					  
						      
					     
						         ,        ,          。
					    
						  :. []
						  :. []
						  :Object.keys(o);
						  :delete     
						  :in
						  :for...in
							     (enumerable)   ,         
							        +      
					with  
						         
					Object    
						(0)Object.keys(),Object.getOwnPropertyNames()
						(1)           

						Object.getOwnPropertyDescriptor():       attributes  。
						Object.defineProperty():  attributes  ,      。
						Object.defineProperties():  attributes  ,      。
						Object.getOwnPropertyNames():                     。
						(2)         

						Object.preventExtensions():      。
						Object.isExtensible():         。
						Object.seal():      。
						Object.isSealed():           。
						Object.freeze():      。
						Object.isFrozen():           。
						(3)       

						Object.create():       ,       。
						Object.getPrototypeOf():     Prototype  。
					Object    
						valueOf():          。
						toString():              。
						toLocaleString():                。
						hasOwnProperty():                  ,            。
						isPrototypeOf():                 。
						propertyIsEnumerable():           。
				  (array)
					  :    ,     
					length
						32   ,         ,   2e32 - 1
						    :length    
						    :length=0
					     
						arguments,  call         
					in
						     
					  
						        
						     length
						           
						delete   
						    
							forEach  、for...in  、  Object.keys
					    
						Array.isArray(a)
					    
						concat()	          ,     。
						join()	               。              。
						pop()	              
						push()	               ,       。
						reverse()	          。
						shift()	             
						slice()	               
						sort()	          
						splice()	    ,         。
						toSource()	         。
						toString()	         ,     。
						toLocaleString()	          ,     。
						unshift()	               ,       。
						valueOf()	          
				  (function)
	  :
		1)        ,     
		2)               (         )
		3)   instanceof      
es6   :
	symbol    
		  :          
		  :obj = Symbol(desc)
		  :typeof(Symbol) => symbol
		  :
			Symbol,        。               ,           ,        Symbol  。       Symbol  ,        ,                。

			Symbol      new   ,Symbol                     ,      ,      Symbol        。

			Symbol         ,       。  ,      ,  Symbol      ,Symbol          。

			Symbol     ,        for…in、for…of   ,    Object.keys()、Object.getOwnPropertyNames()  。  ,        ,   Object.getOwnPropertySymbols  ,           Symbol   。

			Symbol.for             ,                Symbol 。   ,     Symbol ,                   Symbol 。  ,Symbol          。
		  :
			var a = Symbol('foo');
			var b = Symbol('foo');
			var s1 = Symbol.for('foo');
			var s2 = Symbol.for('foo');
			s1 === s2 => true
			a === b => false

			a === s2 => false
			Symbol.keyFor(s1) => "foo"
			Symbol.keyFor(a) => undefined
		  :
			Symbol.hasInstance
			                             。    instanceof         。
			Symbol.isConcatSpreadable
			          ,          Array.concat            。
			Symbol.iterator
			             。    for…of        。
			Symbol.toPrimitive
			               。    ToPrimitive           。
			Symbol.toStringTag
			           ,                。        Object.toString        。
			Symbol.unscopables
			         ,             with        。
データタイプ変換:
    
	Number()
		    :        ,  NaN
			Number(false) => 0
			Number(true) => 1
			Number(undefined) => NaN
			Number(null) => 0
			Number("1.2") => 1.2
			Number("12") => 12
			Number("1.2.3") => NaN
			Number(new object()) => NaN
			Number(50) => 50
		Number({}) => NaN
	String()
		          
			  :        。
			   :         。
			   :true  "true",false  "false"。
			undefined:  "undefined"。
			null:  "null"。
		String({a: 1}) => "[object Object]"
		String([1, 2, 3]) => "1,2,3"
	Boolean()
		false
			undefined
			null
			-0
			0 +0
			NaN
			false
			''
		true
			    ,  {}、    new Boolean(false)
    
	  :
		           
			123 + 'abc' => "123abc"
		              
			if ('abc')
		                ( “+” “-”)
			+ {foo: 'bar'} => NaN
	  :
		        ,     number、string、boolean
データタイプ検出:
	typeof   
		  、   、   、undefined、  ,     number、string、boolean、undefined、function
		    ,       object
			typeof window  =>  "object"
			typeof {}  =>  "object"
			typeof []  =>  "object"
			typeof null  =>  "object"
	instanceof   
		  :       ,                  
		  :              ,            
			v instanceof Vehicle     Vehicle.prototype.isPrototypeOf(v)
		instanceof             ,         ,             true
		  :Object.create(null) instanceof Object  =>  false,                    
		  :instanceof         ,         
	Object.prototype.toString(value)  
		         
			Object.prototype.toString.call(value);
		   
			  :  [object Number]。
			   :  [object String]。
			   :  [object Boolean]。
			undefined:  [object Undefined]。
			null:  [object Null]。
			  :  [object Array]。
			arguments  :  [object Arguments]。
			  :  [object Function]。
			Error  :  [object Error]。
			Date  :  [object Date]。
			RegExp  :  [object RegExp]。
			    :  [object " +         + "]
転載先:https://juejin.im/post/5c6e3daaf265da2db91267a0