<script type="text/javascript">
var name="xm"; //全局变量,window.name===name; 返回:true
function fn(){ //全局变--方法 , window.fn()====fn(); 返回:true
var name="xh"; //局部变量 , 可以理解为fn().name===name。(本来是看不到的,为了好理解,虚拟为一个实例)
var sex="male"; //局部变量 ,可以理解fn().sex===sex。
function fn2(){ //局部变量--方法,可以理解为fn().fn()2。
var name="xl"; //局部变量
var age=16; //局部变量
}
}
// document.write(person); 这样写会报错,显示变量person未定义,因为上文本身就不存在这样一个变量。
document.write(window.person); //在javascript中,在全局变量中的老大是window,
//上面一句的person是一个不存在的变量,现在在person前面加window----window.person。
//现在的person是一个属性了。window.person,不会报错,因为person只是对象window的一个属性,
//只会显示Undefined,未定义。
</script>
有上面变量对象可以得到如下:
我们把,window,fn(),fn2()看成3个变量对象,后面两个实际不存在的,只是为了好理解引出作用域链。如下图:
上图就是一个作用域链:作用域链只能从内往外访问,不能从外往里面访问。切记。使用作用域链进行查询和浪费资源,
因为当作用域链非常长的时候,查询时间久会很长。所以,局部变量一定是快于全局变量的,内层变量的运行速度一定快于外层变量的。
变量对象window的属性:name , fn() ===>变量对象fn()的属性:name , sex, fn2() ===> 变量对象fn2()的属性:name , age .
全局变量可以在局部中访问,局部变量不可以在全局访问。
以是由全局变量 到 局域变量,优先级:低 到 高,最里面最高。同名变量越内层优先级越高。
--------
延长作用域链:
<script type="text/javascript">
var person={};
person.name="xm";
person.sex="male";
var score=4;
with(person){ //with就是person,就是同一个变量对象。
name="xh";
sex="female";
score=44;
}
console.log(person.name);
console.log(person.sex);
console.log(score);//如下图:person变量对象没有socre属性时,会一直向外寻找该属性代替,
//距离person变量对象越近优先级越高。这里就使用变脸对象window的属性进行代替了。
</script>
上图只是做一个演示,可以使用with(){} 延长作用域链,但实际中是不使用的,因为作用域链很费时费力,速度很慢。
只说明作用域链:全局变量可以在局部中访问,局部变量不能在全局中访问。
PHP的时间函数date()//使用date()函数时,必须先设定时区:date_default_timezone_set("Asia/Shanghai");echo "today is ".date("y/m/d/h/i/s/sa")."<br>";date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。下面列出了一些常用于日期的字符: d - 表示月里的某天(01-31) m - 表示月(01-12) Y - 表示年(四位数) 1 - 表示周里的某天(这个英文L的小写l,不是数字1)其他字符,比如 "/", "." 或 "-" 也可被插入字符中,以增加其他格式。下面是常用于时间的字符: h - 带有首位零的 12 小时小时格式 i - 带有首位零的分钟 s - 带有首位零的秒(00 -59) a - 小写的午前和午后(am 或 pm)如果从代码返回的不是正确的时间,有可能是因为您的服务器位于其他国家或者被设置为不同时区。因此,如果您需要基于具体位置的准确时间,您可以设置要用的时区。下面的例子把时区设置为 "Asia/Shanghai",然后以指定格式输出当前时间:date_default_timezone_set("Asia/Shanghai");echo "today is ".date("y/m/d/h/i/s/a")."<br>"//sa可以连写,表示:秒和pm/am===============================通过 PHP mktime() 创建日期----make time语法:mktime(hour,minute,second,month,day,year);如下:$d=mktime(9, 12, 31, 6, 10, 2015);echo "创建日期是 " . date("Y-m-d h:i:sa", $d);//谨记$d不能使用引号。--------通过 PHP strtotime() 用字符串来创建日期PHP strtotime() 函数用于把人类可读的字符串转换为 Unix 时间。语法: strtotime(time,now) 如下:date_default_timezone_set("Asia/Shanghai");//创建时间一定要先设定时区 $c=strtotime("10:30am October 14 2018"); echo "今天是:".date("y-m-d-h-i-sa",$c)."<br>";---//设定为上海时区 date_default_timezone_set("Asia/Shanghai"); //可以用next days,+/-n days/months/years/seconds/hours/minutes... $d=strtotime("yesterday"); echo "明天的时间为:".date("y-m-d-h-i-l-sa",$d)."<br>"; $a=strtotime("-6 days"); echo "三个月后的时间为:".date("y-m-d-h-i-sa",$a)."<br>";
原文地址:https://www.cnblogs.com/Knowledge-is-infinite/p/10618360.html