资讯专栏INFORMATION COLUMN

javascript入门教程(二):变量

Muninn / 2236人阅读

摘要:大家好,我从今天开始就会正式讲的语法方面。变量中的变量一般使用来声明的不在本教程讨论范围内,可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值,这样变量会默认为。

大家好,我从今天开始就会正式讲javascript的语法方面。
变量

js中的变量一般使用var来声明(es6的let不在本教程讨论范围内),可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值,这样变量会默认为undefined。

var a=100; 
var b="hello,world";
var c=true;


变量提升
在js中,用var定义的变量会出现提升的效果,变量一般会提升到所在作用域的最顶部,简单来说就是,如果变量在函数中,就会提升到函数最顶部,如果在全局作用域(window)中,就会提升到所有代码的最顶部。
这里给一个例子:
 console.log(a);
 var a=100;
//输出结果为undefined

这里实际上真正的代码是:

var a;
console.log(a);
a=100;

因为a提升到顶部后未被赋值,所以最后会输出undefined,而且亲测严格模式下变量提升不会受到影响。
(提升:在js中多次声明一个变量,只有最后一次声明有效)

没有块级作用域

任何一对花括号中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域
在java和c等语言中,块级作用域的效果很明显,比如下面这段代码:

#include  
void main() 
{ 
int i=2; 
i--; 
if(i) 
{ 
int j=3; 
} 
printf("%d/n",j); 
} 

运行这段代码,会出现错误。可以看到,C语言拥有块级作用域,因为j是在if的语句块中定义的,因此,它在块外是无法访问的。

但是在js中就不是这样了:

for(var i=0;i<3;i++){}
console.log(i); //输出3

所以在js里面并没有块级作用域,它只有函数作用域,在函数内部用var定义的变量不能被外部访问到,因为函数调用结束后,变量会被自动销毁。

(提示:在函数内部不用var直接声明的变量会默认为全局变量,比如:test=100;这个test在函数外部依然能被访问到,因为默认为全局变量,但是在严格模式下这样声明一个变量会出错)

那么如何实现块级作用域呢?
在js中有一种立即执行的函数,在里面定义的变量一般不会泄露到外界,由于这里还没有讲函数,所以我只稍微提一下,以后再好好讲。

我只是把js每个部分的重点理清一下,具体的还是需要大家自己去看,比如关键字,注释,区分大小写等等,这套教程只适合在零碎时间去看,如果大家能有所收获,我就很满足啦。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/50068.html

相关文章

  • javascript入门教程):变量

    摘要:大家好,我从今天开始就会正式讲的语法方面。变量中的变量一般使用来声明的不在本教程讨论范围内,可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值,这样变量会默认为。 大家好,我从今天开始就会正式讲javascript的语法方面。变量 js中的变量一般使用var来声明(es6的let不在本教程讨论范围内),可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值,这样变量会默...

    baihe 评论0 收藏0
  • 带你入门 JavaScript ES6 ()

    摘要:上一篇学习下一代语法一,我们学习了关于块作用域变量或常量声明和语法新的字符串拼接语法模版字面量数组元素或对象元素的解构赋值和对象字面量简写的相关知识。这便是扩展运算符的用途之一。 本文同步 带你入门 JavaScript ES6 (二),转载请注明出处。 上一篇学习下一代 JavaScript 语法: ES6 (一),我们学习了关于块作用域变量或常量声明 let 和 const 语法、...

    chanthuang 评论0 收藏0
  • 【连载】前端个人文章整理-从基础到入门

    摘要:个人前端文章整理从最开始萌生写文章的想法,到着手开始写,再到现在已经一年的时间了,由于工作比较忙,更新缓慢,后面还是会继更新,现将已经写好的文章整理一个目录,方便更多的小伙伴去学习。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 个人前端文章整理 从最开始萌生写文章的想法,到着手...

    madthumb 评论0 收藏0
  • ES6入门笔记(

    摘要:入门笔记二对字符串操作的扩展传统上,只有方法,可以用来确定一个字符串是否包含在另一个字符串中。返回布尔值,表示参数字符串是否在源字符串的头部。用于头部补全,用于尾部补全。模板字符串中嵌入变量,需要将变量名写在之中。 ES6入门笔记(二) ES6对字符串操作的扩展 传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法...

    godlong_X 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<