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. 函数声明表达式(优先级比较高)
下面开始分析:
做用域值的分析,也能够经过词法分析,去分析