使用var聲明的變量 和 直接賦值并未聲明的變量的區別

在看JS高級程序設計時忽然想到這個問題,眾所周知,直接賦值一個變量而為聲明,會產生一個全局變量(或者說是全局對象的屬性),但用var聲明的變量 和 直接賦值而并未聲明的變量 都有哪些區別呢,這是我在百度知道上搜到的,個人感覺總結的很全:

1.在函數作用域內 加var定義的變量是局部變量,不加var定義的就成了全局變量。
使用var定義
var a = 'hello World';
function bb(){
var a = 'hello Bill';
console.log(a);?
}
bb() // 'hello Bill'
console.log(a); // 'hello world'

不使用var定義
var e = 'hello world';
function cc(){
e = 'hello Bill';
console.log(e); // 'hello Bill'
}
cc() // 'hello Bill'
console.log(e) // 'hello Bill'

2.在全局作用域下,使用var定義的變量不可以delete,沒有var 定義的變量可以delete.也就說明隱含全局變量嚴格來說不是真正的變量,而是全局對象的屬性,因為屬性可以通過delete刪除,而變量不可以。
3.使用var 定義變量還會提升變量聲明,即(不理解的說明要多理解理解預編譯了
使用var定義:
function hh(){
console.log(a);
var a = 'hello world';
}
hh() //undefined

不使用var定義:
function hh(){
console.log(a);
a = 'hello world';
}
hh() // 'a is not defined'

這就是使用var定義的變量的聲明提前。
4.在ES5的'use strict'模式下,如果變量沒有使用var定義,就會報錯。?

轉載于:https://www.cnblogs.com/Walker-lyl/p/5262698.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458228.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458228.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458228.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

轉載-程序員編程技術迅速提高的終極攻略

2019獨角獸企業重金招聘Python工程師標準>>> 前言 你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場后哪怕沒有什么經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都…

工作記錄二-Docker+Dockerfile

1. 安裝虛擬機 Oracle VM VirtualBox, 安裝centos 7.2版本2. 需要在命令行中先設置代理: export http_proxyproxy.xxxxx.com:8080 3. 運行 yum install docker安裝docker 安裝 docker-compose curl -L https://github.com/docker/compose/releases/down…

SVM

from:https://blog.csdn.net/liugan528/article/details/79448379 SVM 1. 基本概念 支持向量機(Support Vector Machine, SVM)的基本模型是在特征空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SVM是用來解決二分類問題的有監督學…

listView當中有嵌套了有onClickListener的控件時ListView自身的onItemClick無響應的解決方案...

參考:http://www.cnblogs.com/bluestorm/archive/2013/03/24/2979557.html 解決方案 在ListView要顯示的Item的外層加上 android:descendantFocusability"blocksDescendants"轉載于:https://www.cnblogs.com/jinglecode/p/5683724.html

LoadRunner常用術語

1.場景 2.負載發生器 3.虛擬用戶 4.虛擬用戶腳本 5.事務 6.思考時間 7.集合點 8.事務響應時間 轉載于:https://www.cnblogs.com/Andy-Lv/p/5263707.html

跟我學Shiro目錄貼

2019獨角獸企業重金招聘Python工程師標準>>> http://jinnianshilongnian.iteye.com/blog/2018398 轉載于:https://my.oschina.net/zhanggongming/blog/714844

【WinForm-無邊框窗體】實現Panel移動窗體,沒有邊框的窗體

沒有邊框的窗體怎么移動?其實方法有很多,下面介紹一種用控件來移動窗體,Panel或PictureBox都可。主要設置控件的MouseDowm和MouseLeave事件。 第一步:窗體設計 窗體最上面是一個panel1 窗體最下面是一個Panel3,只顯示最…

\Grokking Algorithms\簡介與作者采訪

\關鍵點\這本書目的是告訴讀者解決問題的新方法。 \這本書試圖通過插圖來讓大家更容易掌握主題,避免部分讀者覺得太費解。 \這本書不僅適合沒有接觸過算法的人,也適合剛從計算機專業畢業的學生。 \這本書提供了非常多的例子和簡單練習。 \這并不是一本參…

ZedGraph使用經驗

開源的統計圖控件中基本常用的是OpenFlashChar和ZedGraph,今天就先來講講ZedGraph的使用。 ZedGraph資源 ZedGraph來源:http://sourceforge.net/project/showfiles.php?group_id114675ZedGraph相關例子資源:http://zedgraph.org/wiki/index.…

[轉載]聊一聊人員培養

轉載自“搜狗測試”微信。 人員培養的痛點 大家在組內人員培養是否遇到了如下問題: 組員成長緩慢,無法達到預期 有時候感覺組員沒啥進步,有時候感覺組員挺好的,無法統一評價 腦子里都是組員的問題,無法集中精力做其他…

QCon2016舊金山大會焦點分享者確認

QCon舊金山大會是由InfoQ舉辦的連續十年的最大的英語會議,它將在今年11月7-9日在舊金山灣區舉行。\\在QCon大會涵蓋了一系列深入的技術,架構師、資深開發者所關注的國際事件,聚焦創新領域和軟件發展趨勢,QCon大會每年在美國、中國…

怎樣安裝兩個tomcat,怎樣配置

裝兩個tomcat 各自是6.0和7.0 可想執行tomcat6.0 可是實際上卻執行tomcat7.0 兩個版本號都是用解壓縮包 事實上就是不能執行tomcat6.0 僅僅能執行7.0 兩個環境變量都配置了。port也改了 還是不行 我遇到這樣的情況了,不知大家遇到沒有,例如以下是我的…

機器學習實戰之SVM

一引言:支持向量機這部分確實很多,想要真正的去理解它,不僅僅知道理論,還要進行相關的代碼編寫和測試,二者想和結合,才能更好的幫助我們理解SVM這一非常優秀的分類算法支持向量機是一種二類分類算法&#x…

模擬分頁效果

css部分&#xff1a; <style type"text/css">.main{width:800px;zoom:1;margin:0 auto;}.item{width:800px;overflow:hidden;}ul{padding:0;width:860px;zoom:1;}.clear{zoom:1;}.clear:after{content:"";display:block;height:0;clear:both;visibil…

XML基本概念及增刪改查操作

一、概念及特征&#xff1a; 1. XML 指可擴展標記語言(Extensible Markup Language)&#xff0c;用戶可以自己定義標簽。XML 被設計用來傳輸和存儲數據&#xff0c;而 HTML 用于格式化并顯示數據&#xff0c;并且HTML不能自定義標簽。 2. XML 文檔形成一種樹結構&#xff0c; X…

mysql 時間類型 datetime,timestamp

2019獨角獸企業重金招聘Python工程師標準>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根據 mysql 的當前時間&#xff0c;使用mysql 的當前時間。 參考地址&#xff1a;http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html datetime 和 timestamp 都是保存時間格…

生成jsp驗證碼的代碼詳解(servlet版)

package util; import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.*; import javax.servlet.*; import javax.servlet.http.*; import com.sun.image.codec.jpeg.*; /** 生成驗證碼圖片*/ public class ValidateCode exten…

機器學習中的交叉驗證(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉驗證&#xff08;Cross validation)&#xff0c;交叉驗證用于防止模型過于復雜而引起的過擬合. 有時亦稱循環估計&#xff0c; 是一種統計學上將數據樣本切割成較小子集的實用方法。于是可以先在一個子…

linux禁止ping

執行此命令 &#xff1a;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 可以禁止ping一、如果沒有iptables禁止pingecho 1 > /proc/sys/net/ipv4/icmp_echo_igore_all #開啟echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all #關閉二、利用iptables規則禁pingi…

python3字符串屬性(二)

1、S.isdecimal() -> bool Return True if there are only decimal characters in S, False otherwise. 字符串如果是十進制&#xff0c;返回True。 2、S.isdigit() -> bool Return True if all characters in S are digits and there is at least one character …