JavaScript快速入门(二)——JavaScript变量
变量声明
JavaScript的变量声明分为显式声明跟隐式声明。
显式声明
即带var关键字声明,例如
var example = example;
要注意JavaScript里面声明的关键字只有function和var两个,不要和C之类的int、float等弄混了。
我们也可以暂时不初始化,和下面这句是等价的:
var example;
example = "example";
如果我们没初始化的话,变量将是undefined。但不建议不初始化,而是根据变量的用途来初始化,例如若变量为字符串,则赋值为空字符串,如果是数字,则赋值为0等等。
var variable1 = 1,
variable2 = 2,
variable3 = 3;
注意若是批量声明的话除了最后一个声明后面是分号其他的都是逗号,否则后面的变量会变成隐式声明变量。
用function关键字声明也属于显式声明,下面两句是等价的
function func() {}
var func = function() {}
隐式声明
example = "example";
这样也是合法的,那么两者有什么区别呢?
变量类型
前面说过JavaScript没有C的int、float等关键字,那么,JavaScript变量有没有类型呢?
废话,前面都说了,若变量为字符串,则初始化为空字符串等等,那就肯定有类型了。JavaScript共有6种基本变量
- 未定义 undefined
- 字符串 string
- 数值 number
- 布尔值 boolean
- 函数 function
- 对象 object
其中,前四种是值类型,后两种是引用类型,引用类型可以参照C里面的指针(但实际上JavaScript是没有指针的)
typeof(1234); // number
undefined类型
主要在以下情况出现
- 显式声明了但未初始化的变量
- 未声明直接引用的变量
- 直接初始化为undefined的变量
- 函数声明提升
后面的函数声明提升涉及JavaScript的解析原理,这里先不讲,以后有机会再讲
string类型
var str = "1234"; // str = "1234"
var str = new String(); // str = ""
var str = new String("1234"); // str = "1234"
如果String构造函数不传参数,则默认为空字符串。
var str = new String("1234");
console.log(str.length); // 4
"1234".length; // 4
所有对象(除undefined和null外)都有toString方法,传入String构造函数的任意类型数据都会被转换为字符串,包括undefined和null
var str = new String(1234); // str = "1234"
var str = new String(undefined); // str = "undefined"
var str = new String(null); // str = "null"
number类型
var num = 1234; // num = 1234
var num = new Number(undefined); // num = 1234
和字符串类似,如果我们传入构造函数的是其他类型的呢?
var num = parseInt("1234"); // num = 1234
如果被转化的对象里含有非数字字符,那么就会返回NaN(not a number),NaN表示应该返回number类型结果却没有
var num = parseInt("ab1234"); // num = NaN
boolean 类型
- number转Boolean:0为false,其他为true
- string转Boolean:空串为false,其他为true
- undefined转Boolean:永远为false
- object转Boolean:空对象为false,其他为true
- function转Boolean:永远为true
function类型
function func(param1, param2) {
return param1 + param2;
}
var func = function(param1, param2) {
return param1 + param2;
}
var func = new Function("param1", "param2", "return param1 + param2");
这三者在绝大多数情况下是等价的。之所以说绝大部分,是因为在函数声明提升中会有所不同,这里也不涉及。
object类型
var obj = new Object();
var obj = {};
object类型变量可以使用object方法,object类型有prototype属性(JavaScript继承的基础)
JavaScript快速入门(二)——JavaScript变量的更多相关文章
- JavaScript快速入门(四)——JavaScript函数
函数声明 之前说的三种函数声明中(参见JavaScript快速入门(二)——JavaScript变量),使用Function构造函数的声明方法比较少见,我们暂时不提.function func() { ...
- Web开发初探之JavaScript 快速入门
本文改编和学习自 A JavaScript Primer For Meteor 和 MDN Web教程 前文 Web开发初探 概述 本文以介绍 JavaScript 为主,初学者掌握本文的内容后,将能 ...
- JavaScript快速入门-ECMAScript基础语法
一.JavaScript引入方式 1.行内式 <script> alert(123); </script> 2.外链式 <script src='custom.js'&g ...
- JavaScript快速入门-ECMAScript函数
JavaScript函数(定义.参数.返回值.闭包.匿名函数) 一.函数定义 function functionName(arg0, arg1, ... argN) { statements } 函数 ...
- javascript快速入门2--变量,小学生数学与简单的交互
变量 对于变量的理解:变量是数据的代号.如同人的名字一样. var num;//在JavaScript中使用关键字var声明一个变量 在JavaScript中,使用上面的语法,就可以声明一个变量,以便 ...
- JavaScript快速入门(一)——JavaScript概览
JavaScript是什么? JavaScript的诞生 在1995年前后,当时世界上的主流带宽为28.8Kbps,现在世界平均下载带宽为21.9Mbps(数据来源于http://www.netind ...
- javascript快速入门1--JavaScript前世今生,HelloWorld与开发环境
JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌入式脚本语言. Cmm背后的理念很简单:一个足够强大可以替代宏 ...
- javascript快速入门22--Ajax简介
Ajax是什么? 首先,Ajax是什么?一个很酷的新兴词汇!仅仅是某种早就有了的技术的一种新说法而已! Ajax是指一种创建交互式网页应用的网页开发技术.要谈到网页应用程序,则必须从WEB的历史来讲: ...
- python3.5+django2.0快速入门(二)
昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...
随机推荐
- ZOJ 1450 Minimal Circle 最小圆覆盖
套了个模板直接上,貌似没有随机化序列 QAQ //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #in ...
- LOVEU
闲来无事,自己编写一个小程序,自娱自乐 //date: 2013/8/14 //designer :pengxiaoen //function : printf the word love #incl ...
- 练习 jquery+Ajax+Json 绑定数据 分类: asp.net 练习 jquery+Ajax+Json 绑定数据 分类: asp.net
练习 jquery+Ajax+Json 绑定数据
- c# 数据库编程(通过SqlCommand 执行DML语句)
原来一直是java,python等语言,最近用c#语言,并编写数据库访问代码.使用了之后,这里总结下,分享下c#如何操作数据库. 在java等其它语言中,有一套标准的api来完成数据库访问,并且一般都 ...
- xcode生成的IOS安装文件的位置
通过xcode生成可以在IOS系统下运行的文件的具体设置: 1.首先,需要有相应的程序,并且在mac下的xcode编译后,能够在模拟器中完美运行. 2.单击xcode,打开Xcode > Pre ...
- 基于visual Studio2013解决算法导论之054图的邻接矩阵表示
题目 图的邻接矩阵表示 解决代码及点评 // 图的邻接矩阵表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <l ...
- 46黑名单显示的bug---(优化ListView)convertView复用带来的问题
是这种需求: 在黑名单的列表中前三个显示特殊的颜色,后面的列表显示其它的颜色,如图: 可是当翻到第二屏的时候.我们发现了: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...
- Vi/VIM键盘图, Vi/vim学习图
Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...
- 利用ant的javac任务来编译程序使用ant的java任务来运行程序
<?xml version="1.0" encoding="UTF-8"?> <project name="javaTest&quo ...
- Android Mediaplayer 调用release()的时候ANR
先stop,然后再release,最后吧media置为null