
發布
注冊
/
登錄傳參的案例
JS有哪幾種傳參方式?
1.背景介紹
我們今天講的傳參是指頁面之間的數據傳遞。
傳統的前端開發中,頁面之間是少有參數交互的,甚至沒有,而在如今的前端環境下,
一個稍微正式點的項目都不可能少了頁面間傳參,頁面的跨越、服務器后臺進行數據請求等,都需要一個或多個傳參的方法。
那么參數在不同的頁面間進行傳遞,一個頁面的參數被另一頁面使用,如何才能做到不同頁面間進行參數傳遞?
在JS中有多種頁面傳遞參數的方法:
一、URL
把參數值附在url后面傳遞到其他頁面
二、H5 web storage
localStroage 和 sessionStorage
三、Cookie
使用瀏覽器Cookie傳遞參數
四、Form 表單
Form表單通過URL傳遞參數
2.知識剖析
2.1、URL傳參
把參數值附在url后面傳遞到其他頁面
如:
http://xxx.com/login.html?user=laozhang&pwd=66666
其中 “user=laozhang”和 “pwd=66666”就是我們傳遞的參數名稱和值。
url和參數之間用 "?"隔開
多個參數之間用 "&"符號連接。
展開 你真的了解前端路由嗎?
以下建議作為參考:
hash模式適用場景:
兼容IE8
沒有重定向傳參需求(第三方認證oauth)
沒有錨點跳躍需求
后端不需要跟蹤前端路由信息
hybrid app需要將前端資源打包在應用內,因為html的域在file://下,所以不能發生重定向
history模式適用場景:
頁面內錨點需求
需要重定向傳參
同構直出
后端跟蹤路由信息
附加路由信息(history.state)獲取路由狀態
memory模式適用場景:
ie8以下兼容
React Native
功能安全--安全分析
SWFMEA,主要針對架構元素進行分析,如針對接口,分析其傳入的參數的異常情況、錯誤調用接口情況等;針對函數,分析其傳參的異常情況、調度的異常情況(沒調用、調用過快、過慢等)、數據的一致性分析、資源消耗異常等情況。
安全機制的覆蓋度,可參考ISO26262標準附錄。
06 DFA
DFA指的是相關性分析,ISO26262要求從三個層面(系統、硬件、軟件)分析,找出系統中的共因以及級聯失效。
若系統進行了ASIL分解,則DFA必須分析,以此作為系統分解后的證據。
級聯失效:
任一失效,系統都會失效;
共因失效:
失效后,冗余措施不起作用。
系統分析角度:
系統架構、系統邊界、系統人員、系統環境、系統開發生產維護等過程。
硬件分析角度:
硬件架構、硬件選型、硬件人員、供電電源等。
軟件分析角度:
CPU共享資源、軟件架構、軟件人員、軟件工具、算法方案等
展開 干貨|嵌入式C代碼的十種優化方案
另外盡量減少喂食次數,沒必要的話盡量不給它傳參,需要循環變量的話讓它自己建立一個靜態循環變量自己累加,速度會快一點。
還有就是結構體訪問,東樓的經驗,凡是在循環里對一個結構體的兩個以上的元素執行了訪問,就有必要建立中間變量了(結構這樣,那C++的對象呢?想想看),看下面的例子:
舊代碼:
total = a->b->c[4]->aardvark + a->b->c[4]->baboon + a->b->c[4]->cheetah + a->b->c[4]->dog;
新代碼:
struct animals * temp = a->b->c[4];
total = temp->aardvark + temp->baboon + temp->cheetah + temp->dog;
一些老的C語言編譯器不做聚合優化,而符合ANSI規范的新的編譯器可以自動完成這個優化,看例子:
float a, b, c, d, f, g;
。。。
a = b / c * d;
f = b * g / c;
這種寫法當然要得,但是沒有優化
float a, b, c, d, f, g;
。。。
a = b / c * d;
f = b / c * g;
如果這么寫的話,一個符合ANSI規范的新的編譯器可以只計算b/c一次,然后將結果代入第二個式子,節約了一次除法運算。
八、函數優化
1.Inline函數
在C++中,關鍵字Inline可以被加入到任何函數的聲明中。這個關鍵字請求編譯器用函數內部的代碼替換所有對于指出的函數的調用。這樣做在兩個方面快于函數調用:第一,省去了調用指令需要的執行時間;第二,省去了傳遞變元和傳遞過程需要的時間。但是使用這種方法在優化程序速度的同時,程序長度變大了,因此需要更多的ROM。
展開 
干貨|FreeRTOS中的任務句柄到底是什么意思?
函數中參數都是傳值,傳指針本質上也是傳值,只不過它的值是指針類型罷了。如果想要改變入參內容,則需要傳該入參的地址,通過解引用修改其指向的內容。
這里的str的值就是*p的值,是多少?它們都是一個指針,就是保存的是一個地址,地址是多少?地址就是使用動態分配內存malloc函數分配的100字節的首地址。然后又使用strcpy()函數將hello world拷貝到*p里面。
這里面就涉及到了二級指針,首先str毫無疑問是一個指針變量對吧?那么&str是啥?理所當然就是一個指針的指針吧,就是地址的地址。
所以,我如果在某個地方申請了一塊內存,如果想得到這塊內存的首地址,而此時我們又定義了一個指針變量,想讓這個指針來保存我們申請內存你的首地址,就必須要傳入這個指針的地址,即指針的指針(二級指針)而不是傳入這個指針。
至于原因上面的例子已經非常清楚的講解了原因。
下面接著回到我們最開始的創建函數的任務句柄。在開始之前我們再把上面的函數封裝一下。
展開