Cesium使用callbackproperty無報錯無效果

需求

畫出動態(tài)線,在width設(shè)置成10時是這樣的效果丈冬。


image.png

但我想動態(tài)改變線的寬度時碍拆,出現(xiàn)錯誤性芬,且沒有報錯提示母谎。

      let width = 10;
      let polyline = new Cesium.PolylineGeometry({
        positions: Cesium.Cartesian3.fromDegreesArrayHeights([
          113.2312,
          23.1172,
          5,
          113.2315,
          23.1178,
          5,
          113.2321,
          23.1176,
          5,
        ]),
        width: new Cesium.CallbackProperty(function (time, result) {
           switch (true) {
             case width == 10:
               width += 5;
               break;
             case width > 10:
               width += 3;
               break;
             case width > 20:
               width -= 7;
               break;
             default:
               width = 10;
               break;
           }
          console.log("time:", time, "result:", result, "width:", width);
          return width;
        }, false),
        vertexFormat: Cesium.PolylineMaterialAppearance.VERTEXT_FORMAT,
      });
      this.viewer.scene.primitives.add(
        new Cesium.Primitive({
          geometryInstances: new Cesium.GeometryInstance({
            geometry: polyline,
          }),
          appearance: new Cesium.PolylineMaterialAppearance({
            material: Cesium.Material.fromType(
              Cesium.Material.PolylineGlowType
            ),
          }),
        })
      );

在打斷點(diǎn)進(jìn)入callback函數(shù)查看時瘦黑,發(fā)現(xiàn)兩條報錯

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function

ES6的模塊自動采用嚴(yán)格模式,不管你有沒有在模塊頭部加上"use strict"

嚴(yán)格模式主要有以下限制:

  • 變量必須聲明后再使用
  • 函數(shù)的參數(shù)不能有同名屬性奇唤,否則報錯
  • 不能使用with語句
  • 不能對只讀屬性賦值幸斥,否則報錯
  • 不能使用前綴0表示八進(jìn)制數(shù),否則報錯
  • 不能刪除不可刪除的屬性咬扇,否則報錯
  • 不能刪除變量delete prop 甲葬,會報錯,只能刪除屬性 selete global[prop]
  • eval 不會在它的外層作用域引入變量
  • eval和arguments不能被重新賦值
  • arguments不會自動反映函數(shù)參數(shù)的變化
  • 不能使用****arguments.callee
  • 不能使用arguments.caller
  • 禁止this指向全局對象
  • 不能使用fn.caller和fn.arguments獲取函數(shù)調(diào)用的堆棧
  • 增加了保留字(比如protected懈贺、static和interface)

上面這些限制经窖,模塊都必須遵守。由于嚴(yán)格模式是ES5引入的不屬于ES6所以請參閱ES5書籍

其中隅居,尤其需要注意this的限制钠至。ES6模塊之中,頂層的this指向undefined胎源,即不應(yīng)該在頂層代碼使用this棉钧。

這里最簡單也是最重要的答案是 use strict 是一種運(yùn)行時自動執(zhí)行更嚴(yán)格的JavaScript代碼解析和錯誤處理的方法。如果代碼錯誤被忽略或失敗涕蚤,將會產(chǎn)生錯誤或拋出異常宪卿。總的來說万栅,這是一個很好的做法佑钾。

嚴(yán)格模式的一些主要有點(diǎn)包括:

  • 使調(diào)試跟更容易。如果代碼錯誤本來會被忽略或失敗烦粒,那么現(xiàn)在將會產(chǎn)生錯誤或拋出異常休溶,從而更快地發(fā)現(xiàn)代碼中的問題代赁,并更快地指引它們的源代碼。

  • 防止意外全局兽掰。如果沒有嚴(yán)格模式芭碍,將指賦值給未聲明的變量會自動創(chuàng)建一個具有該名稱的全局變量。這是JavaScript中最常見的錯誤之一孽尽。在嚴(yán)格模式下窖壕,嘗試這樣做會引發(fā)錯誤。

  • 消除隱藏威脅杉女。在沒有嚴(yán)格模式的情況下瞻讽,對null或undefined的這個值得引用會自動強(qiáng)制到全局。這可能會導(dǎo)致需要headfakes和pull-out-your-hair類型的錯誤熏挎。在嚴(yán)格模式下速勇,因公用null或undefined的這個值會引發(fā)錯誤。

  • 不允許重復(fù)的參數(shù)值婆瓜。嚴(yán)格模式在檢測到函數(shù)的重復(fù)命名參數(shù)(例如快集,函數(shù)foo(var1,var2廉白,var1){})時會引發(fā)錯誤个初,從而捕獲代碼中幾乎可以肯定存在的錯誤,否則您可能會浪費(fèi)大量的時間追蹤猴蹂。

  • 注意:它曾經(jīng)是(ECMAScript 5 中)strict模式將禁止重復(fù)的屬性名稱(例如var object = {foo:“bar”院溺,foo:“baz”};)但是從ECMAScript 2015 開始磅轻,就不再有這種情況了珍逸。

  • 使eval()更安全。eval()在嚴(yán)格模式和非嚴(yán)格模式下的行為方式有些不同聋溜。最重要的是谆膳,在嚴(yán)格模式下,在eval()語句內(nèi)部聲明的變量和函數(shù)不會再包含范圍中創(chuàng)建(它們是以非嚴(yán)格模式在包含范圍中創(chuàng)建的撮躁,這也可能是問的常見來源)漱病。

  • 拋出無效的使用錯誤的刪除符。刪除操作符(用于從對象中刪除屬性)不能用于對象的不可配置屬性把曼,當(dāng)試圖刪除一個不可配置的屬性時杨帽,非嚴(yán)格代碼將自動失敗,而在這種情況下嗤军,嚴(yán)格模式會引發(fā)錯誤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末注盈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叙赚,更是在濱河造成了極大的恐慌老客,老刑警劉巖僚饭,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胧砰,居然都是意外死亡浪慌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門朴则,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钓简,你說我怎么就攤上這事乌妒。” “怎么了外邓?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵撤蚊,是天一觀的道長。 經(jīng)常有香客問我损话,道長侦啸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任丧枪,我火速辦了婚禮光涂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拧烦。我一直安慰自己忘闻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布恋博。 她就那樣靜靜地躺著齐佳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪债沮。 梳的紋絲不亂的頭發(fā)上炼吴,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音疫衩,去河邊找鬼硅蹦。 笑死,一個胖子當(dāng)著我的面吹牛隧土,可吹牛的內(nèi)容都是我干的提针。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼曹傀,長吁一口氣:“原來是場噩夢啊……” “哼辐脖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起皆愉,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嗜价,失蹤者是張志新(化名)和其女友劉穎艇抠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體久锥,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡家淤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瑟由。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片絮重。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖歹苦,靈堂內(nèi)的尸體忽然破棺而出青伤,到底是詐尸還是另有隱情,我是刑警寧澤殴瘦,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布狠角,位于F島的核電站,受9級特大地震影響蚪腋,放射性物質(zhì)發(fā)生泄漏丰歌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一屉凯、第九天 我趴在偏房一處隱蔽的房頂上張望立帖。 院中可真熱鬧,春花似錦悠砚、人聲如沸厘惦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宵蕉。三九已至,卻和暖如春节榜,著一層夾襖步出監(jiān)牢的瞬間羡玛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工宗苍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稼稿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓讳窟,卻偏偏與公主長得像让歼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丽啡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容