成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【前端面試】變量和類型計(jì)算

DoINsiSt / 1751人閱讀

摘要:題目使用能得到哪些類型和的選擇中有哪些內(nèi)置函數(shù)變量按存儲(chǔ)方式分為哪些類型,并描述其特點(diǎn)如何理解知識(shí)點(diǎn)值類型和引用類型值類型引用類型對象,數(shù)組,函數(shù)值類型直接把值存儲(chǔ)在堆中,把賦值給在內(nèi)存中是又給開辟了一塊新的空間,存儲(chǔ)了同樣的值。

1.題目

1.JS使用typeof能得到哪些類型

=== 和 == 的選擇

JS中有哪些內(nèi)置函數(shù)

JS變量按存儲(chǔ)方式分為哪些類型,并描述其特點(diǎn)

如何理解JSON

2.知識(shí)點(diǎn) 2.1 值類型和引用類型

值類型(boolean,string,number,null,undefined)

var a = 10;
var b = a;
a = 20;
console.log(b); //10

引用類型(對象,數(shù)組,函數(shù))

var a = {x:10}
var b = a;
a.x = 20;
console.log(b); //20

值類型直接把值存儲(chǔ)在堆中,把a(bǔ)賦值給b在內(nèi)存中是又給b開辟了一塊新的空間,存儲(chǔ)了同樣的值。

引用類型分兩塊存儲(chǔ),先在堆中存儲(chǔ)一個(gè)實(shí)際的值,再在棧中存儲(chǔ)一個(gè)堆中值的引用地址,指向堆中的對象。把a(bǔ)賦值給b是在棧中重新開辟一塊空間存儲(chǔ)的還是相同對象的引用地址,a和b存儲(chǔ)的地址相同,指向的對象也相同。當(dāng)對象值發(fā)生改變時(shí),兩者會(huì)同時(shí)改變。

引用類型的值一般都比較大,采用此種存儲(chǔ)方式可以節(jié)省內(nèi)存空間。

2.2 typeof運(yùn)算符
typeof "abc" //string
typeof 123  //number
typeof true  //boolean
typeof undefined  //undefined
typeof null  //object
typeof {a:10}  //object
typeof [1,2,3]  //object
typeof console.log()  //function
2.3 類型轉(zhuǎn)換

強(qiáng)類型轉(zhuǎn)換:通過String(),Number(),Boolean(),parseInt()函數(shù)強(qiáng)制轉(zhuǎn)換

可能發(fā)生隱式類型轉(zhuǎn)換的場景

字符串拼接

使用==

if語句

邏輯循環(huán)

一、首先看雙等號(hào)前后有沒有NaN,如果存在NaN,一律返回false。

二、再看雙等號(hào)前后有沒有布爾,有布爾就將布爾轉(zhuǎn)換為數(shù)字。(false是0,true是1)

三、接著看雙等號(hào)前后有沒有字符串, 有三種情況:

1、對方是對象,對象使用toString()或者valueOf()進(jìn)行轉(zhuǎn)換;
2、對方是數(shù)字,字符串轉(zhuǎn)數(shù)字;(前面已經(jīng)舉例)
3、對方是字符串,直接比較;
4、其他返回false
四、如果是數(shù)字,對方是對象,對象取valueOf()或者toString()進(jìn)行比較, 其他一律返回false

五、null, undefined不會(huì)進(jìn)行類型轉(zhuǎn)換, 但它們倆相等

上面的轉(zhuǎn)換順序一定要牢記,面試的時(shí)候,經(jīng)常會(huì)出現(xiàn)類型的問題。

"100"==100  //轉(zhuǎn)換成字符串
""==0  //轉(zhuǎn)換成false
undefined == null; // true
1 == true; // true
2 == true; // false
0 == false; // true
0 == " "; // true
NaN == NaN; // false
[] == false; // true
[] == ![]; // true
//在if中轉(zhuǎn)換成false的:
null
undefined
""
NaN
0
false
10 && 0  //0  10轉(zhuǎn)換成true
"" || "abc" //abc   ""轉(zhuǎn)換成false
!window.abc  //true    
2.4 null和undefined的區(qū)別

null:是被賦值過的對象,刻意把一個(gè)對象賦值為null,故意表示其為空,不應(yīng)有值,所以對象為null是正常的,typeof null 返回 "object" ,null可以轉(zhuǎn)換為0

undefined 表示“缺少值”,即此處應(yīng)有一個(gè)值,但還沒有定義;轉(zhuǎn)為數(shù)值時(shí)為NaN(非數(shù)字值的特殊值) typeof undefined 返回 "undefined"

3.題目解答 3.1 JS使用typeof能得到哪些類型
typeof "abc" //string
typeof 123  //number
typeof true  //boolean
typeof undefined  //undefined
typeof null  //object
typeof {a:10}  //object
typeof [1,2,3]  //object
typeof console.log()  //function
3.2 === 和 == 的選擇

jquery源碼中的寫法:

除了以下方式其他全部使用 ===

if(obj.a == null){
   //相當(dāng)于 obj.a === undefined || obj.a === null
}
3.3 JS中有哪些內(nèi)置函數(shù)

單純作為語言來說,不考慮node和瀏覽器web

Object

Array

Boolean

Number

String

Function

Date

RegExp

Error

內(nèi)置對象:Math,JSON

3.4 JS變量按存儲(chǔ)方式分為哪些類型,并描述其特點(diǎn)

值類型何引用類型

3.5 如何理解JSON

JSON是JS中的一個(gè)內(nèi)置對象

區(qū)別

JS對象 {x:10}

JSON對象 {"x":10}

JSON串 "{"x":10}"

//將JS對象轉(zhuǎn)換成json串
JSON.stringify({x:10});
//將json字符串轉(zhuǎn)換成json對象
JSON.parse("{"x":10}");
3.6 嚴(yán)格模式

目的

消除Javascript語法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為;
 
消除代碼運(yùn)行的一些不安全之處,保證代碼運(yùn)行的安全;

提高編譯器效率,增加運(yùn)行速度;

為未來新版本的Javascript做好鋪墊。

特性

  "use strict";

可以選擇放在一個(gè)函數(shù)中或自定義作用域中。

禁止this指向全局對象

  function f(){
    return !this;
  } 
  // 返回false,因?yàn)?this"指向全局對象,"!this"就是false
  function f(){ 
    "use strict";
    return !this;
  } 
  // 返回true,因?yàn)閲?yán)格模式下,this的值為undefined,所以"!this"為true。

創(chuàng)設(shè)eval作用域

正常模式下,Javascript語言有兩種變量作用域(scope):全局作用域和函數(shù)作用域。嚴(yán)格模式創(chuàng)設(shè)了第三種作用域:eval作用域。
正常模式下,eval語句的作用域,取決于它處于全局作用域,還是處于函數(shù)作用域。嚴(yán)格模式下,eval語句本身就是一個(gè)作用域,不再能夠生成全局變量了,它所生成的變量只能用于eval內(nèi)部。

  "use strict";
  var x = 2;
  console.info(eval("var x = 5; x")); // 5
  console.info(x); // 2

全局變量顯式聲明

 v = 1; // 報(bào)錯(cuò),v未聲明
  for(i = 0; i < 2; i++) { // 報(bào)錯(cuò),i未聲明
  }

禁止刪除變量

嚴(yán)格模式下無法刪除變量。只有configurable設(shè)置為true的對象屬性,才能被刪除。

  "use strict";
  var x;
  delete x; // 語法錯(cuò)誤
  var o = Object.create(null, {"x": {
      value: 1,
      configurable: true
  }});
  delete o.x; // 刪除成功

函數(shù)不能有重名的參數(shù)

保留字

為了向?qū)鞪avascript的新版本過渡,嚴(yán)格模式新增了一些保留字:implements, interface, let, package, private, protected, public, static, yield。
使用這些詞作為變量名將會(huì)報(bào)錯(cuò)。

  function package(protected) { // 語法錯(cuò)誤
    "use strict";
    var implements; // 語法錯(cuò)誤
  }
3.7 eval

1.沒有必須使用的應(yīng)用場景

2.不容易調(diào)試,可讀性不好

3.在舊的瀏覽器中如果你使用了eval,性能會(huì)下降10倍。

4.容易xss

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100658.html

相關(guān)文章

  • 前端面試之路二(javaScript基礎(chǔ)整理)

    摘要:在標(biāo)簽中添加屬性,本質(zhì)上是跟在標(biāo)簽里面寫屬性時(shí)一樣的,所以屬性值最終都會(huì)編譯為字符串類型。這個(gè)節(jié)點(diǎn)包括很多,比如,以及一些方法等方法。一個(gè)對象有很多,該集合名字為,里面有其他以及,里面有很多。 一、變量類型和計(jì)算 JS中使用typeof能得到哪些類型 變量類型 值類型:變量本身就是含有賦予給它的數(shù)值的,它的變量本身及保存的數(shù)據(jù)都存儲(chǔ)在棧的內(nèi)存塊當(dāng)中 引用類型:引用類型當(dāng)然是分配到...

    AbnerMing 評論0 收藏0
  • 【進(jìn)階1-3期】JavaScript深入之內(nèi)存空間詳細(xì)圖解

    摘要:進(jìn)階期理解中的執(zhí)行上下文和執(zhí)行棧進(jìn)階期深入之執(zhí)行上下文棧和變量對象但是今天補(bǔ)充一個(gè)知識(shí)點(diǎn)某些情況下,調(diào)用堆棧中函數(shù)調(diào)用的數(shù)量超出了調(diào)用堆棧的實(shí)際大小,瀏覽器會(huì)拋出一個(gè)錯(cuò)誤終止運(yùn)行。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第一期,本周的主題是調(diào)用堆棧,今天是第3天。 本計(jì)劃一共28期,每期重點(diǎn)攻...

    coordinate35 評論0 收藏0
  • 撩課-Web大前端每天5道面試題-Day1

    摘要:的變量提升的底層原理是什么引擎的工作方式是先解析代碼,獲取所有被聲明的變量然后在運(yùn)行。引用計(jì)數(shù)這種方式常常會(huì)引起內(nèi)存泄漏,低版本的使用這種方式。1. var的變量提升的底層原理是什么? JS引擎的工作方式是: 1) 先解析代碼,獲取所有被聲明的變量; 2)然后在運(yùn)行。也就是說分為預(yù)處理和執(zhí)行兩個(gè)階段。 變量提升:所有變量的聲明語句都會(huì)被提升到代碼頭部。 但是變量提升只對var命令聲明的變...

    番茄西紅柿 評論0 收藏0
  • 2019前端面試題(持續(xù)更新)

    摘要:是什么是異步編程的一種解決方案所謂,簡單說就是一個(gè)容器,里面保存著某個(gè)未來才會(huì)結(jié)束的事件通常是一個(gè)異步操作的結(jié)果。 最近也在準(zhǔn)備換工作了,然后收集了一些我覺得今年面試會(huì)遇到常見的問題。 如果有機(jī)會(huì),記得也幫忙分享我一下。2019的行情確實(shí)很糟糕??吹竭@么多人收藏點(diǎn)贊。我的內(nèi)心也是哇涼哇涼的。我也給一些除了面試題之外的經(jīng)驗(yàn)吧 我相信不景氣也是相對的,提升自我也是必要的。我說說我最近在準(zhǔn)...

    woshicixide 評論0 收藏0
  • 2019前端面試題(持續(xù)更新)

    摘要:是什么是異步編程的一種解決方案所謂,簡單說就是一個(gè)容器,里面保存著某個(gè)未來才會(huì)結(jié)束的事件通常是一個(gè)異步操作的結(jié)果。 最近也在準(zhǔn)備換工作了,然后收集了一些我覺得今年面試會(huì)遇到常見的問題。 如果有機(jī)會(huì),記得也幫忙分享我一下。2019的行情確實(shí)很糟糕。看到這么多人收藏點(diǎn)贊。我的內(nèi)心也是哇涼哇涼的。我也給一些除了面試題之外的經(jīng)驗(yàn)吧 我相信不景氣也是相對的,提升自我也是必要的。我說說我最近在準(zhǔn)...

    worldligang 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<