function func(){
}
setInterval(function(){
console.log(123);
},5000)
多數狀況下可能會引入別人的js,若是別人的js函數重複,會致使一個不能用,爲了不這個問題,把內部全部的功能放到函數裏面。作成一個嵌套函數。javascript
可是若是外面的函數名也有重複,怎麼處理,就外邊的函數沒有名字,而且自動執行一下。java
自執行函數怎麼寫呢?python
// ()():第一個括號function,第二個括號傳實參。建立函數,而且自動執行
(function(arg){
console.log(arg);
})(1)
li = [11,22,33,44]
s = JSON.stringify(li) // 把對象轉化爲字符串
newL = JSON.parse(s) // 把字符串轉化爲對象
好比網上搜一個東西,網址自動變成了%等一些內容web
> url = "https://www.sogou.com/web?query=時間" < "https://www.sogou.com/web?query=時間" > newUrl = encodeURI(url) // 轉義 < "https://www.sogou.com/web?query=%E6%97%B6%E9%97%B4" > decodeURI(newUrl) // 轉回原格式 < "https://www.sogou.com/web?query=時間" > newUrl = encodeURIComponent(url) // 所有轉義 < "https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E6%97%B6%E9%97%B4"
默認http請求不是長連接,連一次就斷了,可是網站有保持登陸一個月,怎麼實現的。c#
通常登陸成功後,網站會給你發一段字符串過來,把它保存在硬盤的某個地方。這就是cookie。瀏覽器
客戶端(cookie) =》 服務器端 。 將數據通過轉義後,保存在cookie服務器
escape( ) // 對字符串轉義
unescape( ) // 給轉義字符串解碼
URIError // 由URl的編碼和解碼方法拋出
在Python中:cookie
val = eval(" 1+1 ") # 表達式
exec(" 執行代碼 ") # 好比for循環。但exec只是執行,沒有返回值
在JavaScript中:函數
eval :功能是python裏eval和exec的合集網站
> d = new Date()
Mon Nov 28 2016 22:46:33 GMT+0800 (中國標準時間)
> d.getMinutes()
46
> n = d.getMinutes() + 12
58
> d.setMinutes(n)
1480345113329
> d
Mon Nov 28 2016 22:58:33 GMT+0800 (中國標準時間)
// Date類
// var d = new Date() 當前時間
// d.getXXX 獲取
// d.setXXX 設置
做用域鏈:嵌套函數,做用域一層套一層
如下三個示例,分別會輸出什麼?
// 示例一:
xo = "alex";
function func(){
// var xo = 'eric';
function inner(){
// var xo = 'tony';
console.log(xo);
}
inner()
}
func()
// 示例二:
xo = "alex";
function func(){
var xo = 'eric';
function inner(){
console.log(xo);
}
return inner;
}
var ret = func()
ret()
// 示例三:
xo = "alex";
function func(){
var xo = 'eric';
function inner(){
console.log(xo);
}
var xo = 'tony';
return inner;
}
var ret = func()
ret()
// 注:瀏覽器console中換行,使用shift+回車
函數的做用域存在做用域鏈,而且也是在被調用以前建立
// 示例一:
function func(){
console.log(xxoo);
}
func();
// 程序直接報錯
function func(){
console.log(xxoo);
var xxoo = 'alex';
}
// 解釋過程當中:var xxoo;
func();
// undefined
未賦值變量,提早聲明爲 undefined
> var fgf
undefined
> fgf
undefined
function Foo(n){
this.name = n;
this.sayName = function(){
console.log(this.name);
}
}
var obj1 = new Foo('we');
obj1.name
obj1.sayName()
var obj2 = new Foo('wee');
obj2.name
obj2.sayName()
上面那麼寫能夠,可是有個問題,裏面有些內容被重複定義了,sayName這個方法在每一個對象裏都被重複定義了一次。
class Foo:
def __init__(self,name):
self.name = name
def sayName(self):
print(self.name)
obj1 = Foo('we')
obj2 = Foo('wee')
原型:避免浪費內存資源
function Foo(n){
this.name = n;
}
// Foo的原型
Foo.prototype = {
'sayName': function(){
console.log(this.name)
}
}
obj1 = new Foo('we');
obj1.sayName()
obj2 = new Foo('wee');
以下代碼,分別會對應輸出什麼?
function t1(age){
console.log(age); // function age()
var age = 27;
console.log(age); // 27
function age(){} // 執行時,由於沒有調用,因此執行時不考慮
console.log(age); // 27
}
t1(3);
active object ——> 簡稱AO
1. 形式參數
2. 局部變量
3. 函數聲明表達式(優先級比較高)
下面開始分析:
做用域值的分析,也能夠經過詞法分析,去分析