当前位置: 首页 > 编程日记 > 正文

javascript 基础篇2 数据类型,语句,函数

文章里如果有错误的话,希望能帮忙指正~我也是边看视频边学习中,这个算是个笔记吧~自认为总结出来的东西比看视频要节省点时间~能帮到别人最好了~帮不到也起码恩能帮到我自己 嘿~

写内容之前废话一句:因为旧版有些浏览器不支持javascript脚本,遇到script结点,当做普通内容输出了,所以有时候为了让版本兼容,会在script结点里的内容写上注释符号,这样的话在旧版里虽然程序会失效,但是不会出现我们的代码,类似于这样(请忽略括号以及括号里的东西):

<script type="text/javascript">

<!--       (注意,这里必须换行)

xxxxxx;

-->   (这一行也不可以写东西。)

</script>

注意:  经过测试发现,js语句不可以跟注释符号写在同一行,不然的话就在新版的浏览器里也会失效。


javascript 的数据类型

  • 数值类型:包括所有的数字。
  • 字符串类型 string  用“” 或‘’括起来表示
  • 布尔类型  boolean =true 或 false。

变量:用来存储数据的容器,在程序里存储的数值时可以变化的。

变量的声明: var 变量名[= 值];

如果变量在函数内部声明,那么它是局部的,如果在函数外,那就是全局的,意思你们懂的。

也就是说,不管声明哪种类型的变量,都是用var, 具体是哪一种数据类型,则是在初始化之后确定的。如果没有初始化的话,那么它就是个未定义类型的变量。

我们就利用上篇js里提到的小工程来玩儿一下它的数值类型好了。

在main.html里写入:

<html>
<head>
<title>O.O</title>
<script type="text/javascript" src="js/output.js"></script>
<script type="text/javascript">
var a=456;
var b="Hello~";
var c=true;
var d;
document.write(a
+""+ typeof a+"<br/>");
document.write(b
+""+ typeof b+"<br/>");
document.write(c
+""+ typeof c+"<br/>");
document.write(d
+""+ typeof d+"<br/>");

</script>
</head>

<body>
This is my JSP page. <br/>
</body>
</html>


然后我们看输出:

可以看到,赋值以后,var都有了自己的类型,但是没有定义的var d,就是未定义的。

这里我们可以看到,typeof这个保留字,可以返回基本数据类型的名称,除了这三种之外,还可以返回object的类型。

但是如果是特殊类型,就需要instanceof 来返回类型名称了。

比如如果定义一个 var obj=new Object();  或者var date=new Date(); 使用typeof来返回它的类型( typeof obj ),输出的是 object

数据类型的转换:

从String转换为int/float使用函数: parseInt(String)   / parseFloat(String)  例如:parseFloat("3.14159");

从数字类型转换为string,使用 toString()函数:比如:

var iNum=30; 30.toString(2);//  后面的括号里加个2,意思是转换为二进制字符串。

//同样还可以有8进制和十六进制,如果没有数字,那就是直接转换了。

接下来就是做个小实验了,把刚才那个文件里script结点下的内容换换:

<script type="text/javascript">
var a=456;
var b="789";
var c=a.toString()
var d=parseInt(b);
document.write(a
+""+ typeof a+"<br/>");
document.write(c
+""+ typeof c+"<br/>");
document.write(b
+""+ typeof b+"<br/>");
document.write(d
+""+ typeof d+"<br/>");

</script>

然后,运行一下吧~

看起来,转换类型其实很简单的嘛~

运算

运算其实跟c java都一样,都是加减乘数啊and啊,or啊的,其实没什么差别。

这里就重申明一次i++和++i的差别吧。

i++是执行一次i+1,但是返回i,比如我写一句

var i=50; 
if(i++<=50)
document.write(i);

那么运行时的顺序其实是:赋值:i=50, 判断:if(i<=50), 执行i=i+1 ,执行判断后的语句:xxxx。所以最后输出的是51,我就不截图了。

如果那里使用的是++i,那么返回的是加1后的值,也就是说不会有输出了。


语句部分

条件语句:if  和 switch

其实和c是一样的,这部分并不需要多讲,就是条件语句中也要注意一点小细节:

js的if语句中,在下列情况下返回为false: null \ undefined \ 空字符串"" \ 0 \ false

关于空字符串还要注意下:var s=""和 var s=new String("")是不一样的,后者开辟了内存空间,所以返回true。

下面我们来验证一下吧~,javascript节点下:

 <script type="text/javascript">
var a;
var b=new String("");
if(null) document.write("null");
if(0) document.write("0");
if(a) document.write("a undefined");
if(false) document.write("false");
if("") document.write("empty string");
if(b) document.write("new String()");
document.write(
"<br/>");
</script>

然后保存,刷新main页面:

哎呀( ⊙ o ⊙ ),果然只有new string出现了~。

swith语句也试试好了:

      <script type="text/javascript">
var date=new Date();
var day=date.getDay();
document.write(day
+"<br/>")
switch(day){
case 6,7: document.write("weekend \(^o^)/");
break;
case 5: document.write("hold on~! last day!");
break;
default: document.write("work days.");
}
document.write(
"<br/>");
</script>

查看输出:

OK,接下来是循环语句:while   do-while   for-in   for

前两个唯一的差别就是循环和判断的顺序不同,do-while比while多循环一次,我就不举例了。

for循环相信大家也熟的不能再熟了,我们就看for-in这一句。

这个其实是针对数组的,js中数组的初始化也挺奇特的比如我们在script结点里写:(另外注意下数组的初始化,用的是中括号)

      <script type="text/javascript">      
<!--
document.write(
"test<br/>");
var a=[3,4,5,7];
for(var test in a){
document.write(test
+": "+a[test]+"<br/>");
}
-->
</script>

我们查看输出:

从这个结果里我们探讨出一下几点:

其中test其实算是一个int的数字,来表示数组的数标。

for-in每次循环只能走一个数,一般用来穷举。

某些情况下,只能用for-in来穷举,比如数组里存储的内容有string,有数字。

(当然,如果硬要说的话,也不是只能用for-in,但是for-in要方便许多)







函数部分:

函数其实第一篇简单说过了。

1. 函数名前不需要返回值,参数列表里不需要写类型。

2. 函数内部定义的变量为局部变量,不可以在外面调用。

所以格式基本就是这样:

function  函数名(参数列表){

xxxxxxx;

[return xxxx;] //可有可无

}

OK了,知道了格式,我们来尝试一下:

      <script type="text/javascript">      
<!--
function add(a,b){
var c=a+b;
return c;
}
var x=20, y=45;
document.write(add(x,y));
document.write(
"<br/>"+c);
-->
</script>

输出只有数字哦亲,也就是说,第二行那个直接忽略(真悲剧啊),连undefined的标准都达不到。因为它是局部变量。在函数执行完之后就被抛弃了。

除了这种规范的写法之外,还有一种叛逆的,就是,定义函数的时候没有写参数,但是函数体里也可以用参数,这样,当有参数的时候,可以有输出,此时因为使用的参数没有名字,就全存放在arguments数组里。举个例子:

      <script LANGUAGE="JavaScript">      
<!--
function show(){
for(var temp in arguments)
document.write(arguments[temp]
+"");
}
show(
3,4,"Dumpling",4.67);
-->
</script>

PS:我把script结点里面的属性换了一下,其实就是说也可以这么声明javascript。LANGUAGE必须大写

看输出:

注意,这里面,经测试function内,用arguments里存储的数据做运算也是可以的,

比如

      <script LANGUAGE="JavaScript">      
<!--
function add(){
return arguments[0]+arguments[1];
}
document.write(add(
4,44)+"");
document.write(add(
4,"e55"));
-->
</script>

会输出48  4e55。当然,因为函数体中用到了两个参数,所以如果你调用时只给了一个参数,出来的结果并不是只输出一个值的,有兴趣自己测试下~如果你调用时给了3个参数,那么第三个参数就无情的被忽略了。

除了上面这种还算规整的定义外,还有一些别的方式来定义函数,比较非主流,我不喜欢用,不过还是要写出来了解下:

一种是:var add=new Function("参数","参数",......,"函数体");

 <script LANGUAGE="JavaScript">      
<!--
var add = new Function("a","b","var c; c=a+b; return c");
document.write(add(
4,87));
-->
</script>

输出是正确无误的,可以看到,最后一句不需要加分号,木有问题,这里的道理就是,Function其实是个类,然后add就变成了函数的名字了。

还有一种写法:

      <script LANGUAGE="JavaScript">      
<!--
var show=function(name){
document.write(
"<br/>"+"Hellp "+name);
}
show(
"Dumpling");
-->
</script>

输出大家都懂的。。这个写法其实就是把函数名字写到前面来了而已。

既然证明了函数其实是一个object,那么当然它也有一些功能函数可以调用,比如toString()或者valueOf()函数可以打出完整,length可以返回函数的参数个数。

让我们试一下:

      <script LANGUAGE="JavaScript">      
<!--
var show=function(name){
document.write(
"Hello "+name);
}
show(
"Dumpling");
document.write(
"<br/>"+show.valueOf());
document.write(
"<br/> number of arguments: "+show.length);
-->
</script>

输出:

Hello Dumpling
function (name){ document.write("Hello "+name); }
number of arguments: 1



OK 第二篇就到这里吧~明天继续 (/^o^)/




转载于:https://www.cnblogs.com/jiaozihardworking/archive/2012/02/22/2362088.html

相关文章:

技术图文:如何在Python中定义二维数组?

背景 前几天&#xff0c;有位同学问我如下的问题&#xff1a; “temp[0][0]修改后&#xff0c;为什么temp[1][0]、temp[2][0]也发生了变化&#xff1f;” “在Python中二维数组是怎样定义和使用的&#xff1f;” 今天就来谈谈这个问题。 技术分析 在 C# 语言中有直接定义二…

javascript的垃圾回收机制指的是什么

定义&#xff1a;指一块被分配的内存既不能使用&#xff0c;又不能回收&#xff0c;直到浏览器进程结束。 像 C 这样的编程语言&#xff0c;具有低级内存管理原语&#xff0c;如 malloc()和 free()。开发人员使用这些原语显式地对操作系统的内存进行分配和释放。 而 JavaScript…

技术图文:Matlab向量 VS. Python列表

背景 前段时间在知识星球上立了一个Flag&#xff0c;至少写10篇关于 Python&#xff0c;Matlab 和 C# 对比的总结。这是第 1 篇&#xff0c;从创建结构、添加元素、删除元素、获取元素四个角度来对比 Matlab 的向量与 Python 的列表。 1. 向量/列表 的创建 1.1 直接法 Matla…

我的ExtJS学习之路 ——4

项目基本架子出来&#xff0c;然后就该考虑将封装好的gridpanel 和 tabpanel关联起来 既 点击树的叶子节点&#xff0c;将 gridpanel 展现在 tabpanel中 怎么关联呢&#xff1f; 【在之前的基础上的&#xff0c;重复的代码就不贴出来了】 我改变了 模拟数据的形式&#xff0c;注…

php CI框架输出空行问题排查

今天在使用 curl 命令行工具调试一个功能时&#xff0c;发现输出的内容总是会在最开始莫名其妙的多一行空行&#xff1a; 项目框架是 php 的 CodeIgniter&#xff0c;感觉这种问题在网上不好查找&#xff0c;因为可以确定这个是业务出现的问题&#xff0c;然后只能自己去定位查…

哪些人适合学习软件测试

软件测试相对于其他编程语言来说&#xff0c;它的入门门槛是相对比较低的&#xff0c;想要从事IT互联网行业可以选择学习软件测试&#xff0c;那么都有哪些人适合学习软件测试呢?来看看下面的详细介绍吧。 哪些人适合学习软件测试?就在软件测试培训行业观察来看&#xff0c;小…

c语言基本函数

一.内存操作函数&#xff1a; &#xff08;1&#xff09; 头文件&#xff1a;#include <string.h>memset() 函数用来将指定内存的前n个字节设置为特定的值&#xff0c;其原型为&#xff1a; void * memset( void * ptr, int value, size_t num );参数说明&#xff1a;…

技术图文:Python 匿名函数 VS. C# Lambda表达式

背景 前段时间在知识星球上立了一个Flag&#xff0c;至少写10篇关于 Python&#xff0c;Matlab 和 C# 对比的总结。 这是第 2 篇&#xff0c;从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的Lambda表达式。 匿名函数/Lambda表达式的定义 Python 匿名函数 在 Python…

php是否区分大小写

按常理来说&#xff0c;大多数语言都是区分大小写的&#xff0c;比如变量 ab 和 AB 是不同的&#xff0c;函数cd 和 CD 也是不同的&#xff0c;但是php有点特别。 首先&#xff0c;php中的变量和常量是区分大小写的。 <?php$a a; $A A; echo $a; echo $A;?>这里打印了…

如何创建和获取正则对象?

在JavaSript应用中&#xff0c;使用正则表达式之前&#xff0c;需要创建正则对象。创建正则表达式的方式有两种&#xff0c;一种是用字面量方式创建&#xff0c;另种是通过RegExp0构造函数的方式创建。这两种方式的语法格式如下。 //字面量方式 var变量名/表达式/; // RegExp构…

Numpy入门教程:01. 数组的创建与属性

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

深入浅出WPF——x:Class详解

小序&#xff1a;按照惯例&#xff0c;我会在年末的最后一篇文章里感谢所有帮助过我的人们。今年也不例外&#xff0c;只是形式简单一些。祝所有帮助过我的朋友、同事、学生和兄弟姐妹们——2009年身体健康、平安快乐、财源滚滚。愿2009年的中国&#xff0c;平安祥和、远离各种…

SQL Date 函数

MySQL Date 函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()提取日期或日期/时间表达式的日期部分EXTRACT()返回日期/时间按的单独部分DATE_ADD()给日期添加指定的时间间隔DATE_SUB()从日期减去指定的时间间隔DATEDIFF()返回两个…

什么是java常量

相信很多在学java技术的同学&#xff0c;对java常量这个并不陌生&#xff0c;什么是java常量呢?java常量就是在程序中固定不变的值&#xff0c;是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中&#xff0c;常量包括整型常量、浮点数常量、布尔常量、字符常量等…

Numpy入门教程:02. 索引、切片与迭代

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

php中OR与|| AND与的区别

本身没有区别&#xff0c;习惯问题 &#xff0c;但是有时候牵涉到运算符优先级的问题&#xff0c;结果会不同&#xff0c;记录下。例如&#xff1a;$p 6 or 0;var_dump($p);//int(6)$p 6 || 0;var_dump($p);//bool(true)$p 6 and 0;var_dump($p); //int(6) $p 6 &&…

beego数据输出

概览直接输出字符串模板数据输出 静态模板数据输出动态模板数据输出json格式数据输出xml格式数据输出jsonp调用概览 直接输出字符串 通过beego.Controller.Ctx.WriteString()方法可以直接向http response body中输出字符串 beego中的函数定义如下&#xff1a; // WriteString W…

缓存和web缓存分别是什么?

什么是缓存? 缓存(cache)&#xff0c;原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器&#xff0c;通常它不像系统主存那样使用DRAM技术&#xff0c;而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。 什么是web缓存…

【Python】12、字典的实现

一、字典的实现 dic 可以使用list来实现 i&#xff08;索引&#xff09; hash(key) % solt(槽位数) 此时i重复了怎么办&#xff08;hash冲突&#xff09;&#xff1f; 1、拉链法 每个槽位上拉一个List&#xff0c;就是拉链法 1234567891011121314151617181920212223242526272…

Numpy入门教程:03.数组操作

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

13个JavaScript图表图形绘制插件

由于绘制矢量图的不同技术愈发成熟以及现代浏览器所具备的更强大的计算能力等原因&#xff0c;目前网上出现了越来越多免费 的JavaScript图表和图形绘制解决方案。在本文中就将分享13个优秀实用的JavaScript图表和图形绘制插件&#xff0c;它们少数是独立的框架&#xff0c;大多…

Java swing是什么?有什么作用?

在早期JDK1.0发布时&#xff0c;Sun公司就为GUI开发提供了一套基础类库&#xff0c;这套类库被称为AWT(Abstract Window Toolkit)&#xff0c;即抽象窗口工具包。AWT的起初设想就是为了统一实现不同操作系统的图像界面&#xff0c;但问题是&#xff0c;不同操作系统图形库的功能…

python之网络爬虫

一、演绎自已的北爱 踏上北漂的航班&#xff0c;开始演奏了我自已的北京爱情故事 二、爬虫1 1、网络爬虫的思路 首先&#xff1a;指定一个url&#xff0c;然后打开这个url地址&#xff0c;读其中的内容。 其次&#xff1a;从读取的内容中过滤关键字&#xff1b;这一步是关键&a…

Numpy入门教程:04. 数学函数

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

SAXParserFactory之求解

SAX是Simple API for XML的简称,在Android里面提供对XML文件的解析接口方法&#xff0c;如果给我们一个XML文件&#xff0c;要求把里面我们关心的数据解析出来&#xff0c;我们就可以使用SAX技术&#xff0c;在具体使用中&#xff0c;会对XML文件的每一个字符逐一读取并出发相应…

学习Java知识应该注意哪些基础原则

想要做java程序猿&#xff0c;学习起来没有那么快的&#xff0c;尤其是零基础学员&#xff0c;java技术在学习的过程中是比较枯燥的&#xff0c;下面小编就为大家详细的介绍一下学习Java知识应该注意哪些基础原则&#xff0c;方便大家在学习的时候能够更加有效率! 学习Java知识…

Numpy入门教程:05. 逻辑函数

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

git获取指定release版本代码

首先手里必须有release的版本的备份出来的/.repo/manifests/default.xml文件&#xff0c;该文件记录了每个git库的在该版本下的具体的版本情况&#xff0c;整个代码的sync都是依据他来的&#xff1b; 1、repo sync 将本地代码更新至最新&#xff1b; 2、将手里的manifests.xml&…

【内网福音】如何离线部署Rancher

2019独角兽企业重金招聘Python工程师标准>>> 对于在公司内网环境中、无法访问互联网的用户而言&#xff0c;离线安装部署Rancher是解决问题的关键。本文是Rancher离线部署教程&#xff0c;专为内网用户排坑解难。 版本说明 OS&#xff1a;Centos7.3 Docker version:…

JAVA工资高吗

JAVA工资高吗?很多人都是非常关注这个问题的&#xff0c;近几年&#xff0c;java技术在互联网行业有了自己的一席之地&#xff0c;越来越多的人都投身到java技术行业&#xff0c;下面我们来看看详细的介绍。 JAVA工资高吗? 近年来,在美国、加拿大、澳大利亚、新加坡等发达国家…