大家好,我从今天开始就会正式讲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 <stdio.h>
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每个部分的重点理清一下,具体的还是需要大家自己去看,比如关键字,注释,区分大小写等等,这套教程只适合在零碎时间去看,如果大家能有所收获,我就很满足啦。

本文转载于:猿2048→https://www.mk2048.com/blog/blog.php?id=hhchj11kjhj

javascript入门教程(二):变量的更多相关文章

  1. JavaScript 入门教程二 在HTML中使用 JavaScript

    一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...

  2. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  3. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  4. 无废话ExtJs 入门教程二[Hello World]

    无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...

  5. ArcGIS API for JavaScript 入门教程[0] 目录

    随时翻看. 转载注明出处,博客园/CSDN/B站:秋意正寒. Part 1 必看 ArcGIS API for JavaScript 入门教程[1] 渊源 你还真不一定知道这是啥.非得学吗? ArcG ...

  6. Elasticsearch入门教程(二):Elasticsearch核心概念

    原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  7. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  8. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  9. PySide——Python图形化界面入门教程(二)

    PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...

  10. RabbitMQ入门教程(二):简介和基本概念

    原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

随机推荐

  1. JZ-028-数组中出现次数超过一半的数字

    数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超 ...

  2. LeetCode-095-不同的二叉搜索树 II

    不同的二叉搜索树 II 题目描述:给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 .可以按 任意顺序 返回答案. 二叉搜索树(Binary ...

  3. 矩池云上安装caffe gpu教程

    选用CUDA10.0镜像 添加nvidia-cuda和修改apt源 curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_6 ...

  4. laravel7 搜索分页

    html: <form action="{{url('http://www.yanbing.com/fang/index')}}" method="get" ...

  5. Java运算符 算术运算法

    运算符 算术运算法:+,-,*,/,%,++,– 复制运算符:= 关系运算符:>,<,>=,<=,==,!= instanceof 逻辑运算符:&&,||,! ...

  6. C++中vector::data()使用心得和对自定义类型指针运算符的默认重载

    一.C++ vector::data()函数 返回值类型:vector的基类 返回值:Returns a pointer such that [data(), data() + size()] is ...

  7. vue3-码一下组件的v-model

    RT,码一下组件的v-model,知识点太多,没听懂...,后面学完回来再仔细看看

  8. Docker——网络

    docker0 查看主机的ip [root@iZwz908j8pbqd86doyrez5Z test]# ip addr #本机回环地址 1: lo: <LOOPBACK,UP,LOWER_UP ...

  9. DVWA high 带token暴力破解

    一.选择Pitchfork模式.选择要爆破的参数 二.配置Options 找到optiops(设置)把线程设为1 配置Grep=Extract,点添加 点击Refetch response 获取返回的 ...

  10. swing 实现用户登录注册界面(不使用数据库)

    swing 实现用户登录注册界面(不使用数据库) 实现的功能 先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功: 登录和注册界面: 本次实验分 ...