Javascritp入门

Javascript的基本介绍

JS是用于WEB开发的脚本语言,JS分为三个组成部分(ECMAScript/DOM/BOM)。

脚本语言是什么:

脚本语言往往不能独立使用,它和HTML/JSP/PHP/ASP.NET配合使用

脚本语言也有自己的变量,函数,控制语句(顺序,分支,循环)等

脚本语言实际上是解释性语言(即在执行时直接对源码进行执行),编译语言效率会更高一些

JS和java运行环境的区别:

Java程序.java→.class→jvm

js→浏览器(js引擎来解释执行),JS主要在客户端(浏览器)执行,很少在服务器执行,但并不代表不能在服务器执行。

JS的运行环境的注意点:

因为JS一般是在浏览器上运行,但是浏览器又有很多种,不同类型的浏览器可能对JS的支持不一样,所以才会有W3C规范这一标准。像FireFox,Chrome,IE等等都是遵循W3C的标准写的JS引擎,但是在某些地方可能和W3C标准还是有一定的区别。

JS快速入门

案例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><script language="javascript">function test(){window.alert("hello world!");}</script><title> New Document </title></head><body><input type="button" οnclick="test()" value="Button"/></body>
</html>
<html><head><!--js代码是放在head标签间,但实际上也可以放在别的位置--> <script language="javascript">window.alert("hello");</script></head><body></body>
</html>

小结:

js的位置可以随意放

js必须使用   <script language="javascript"> [代码]</script>,如果是引用外部JS文件,尽管中间没有代码,但是依旧要写成 <script></script>这种形式

在一个html文件中(JSP/PHP/ASP.NET)可以出现多对(script)片段,浏览器会按照先后顺序依次执行

JS变量类型

案例:

<html><head><title> New Document </title></head><body><!----js代码是放在head标签间,但实际上也可以放在别的位置--> <script language="javascript">//js中变量的定义(js中变量用var表示,无论什么类型,事实上连var也可以不写)因为js是解释型语言,所以其变量都是动态的,不需要特意指定变量类型var num1=1;var num2=60;var result=num1+num2;window.alert("结果是"+result); //alert函数 window.alert表示弹出一个对话框</script></body>
</html>

小结:

js是弱数据类型语言,即:在定义变量时候,统一使用var表示,甚至可以去掉var这个关键字

js中的变量的数据是由js引擎决定的

例:

var name=”zs”;     //name是字符串
var kk=2;     //kk是数字
name=234;    //这时name自动变成数

JS命名规范

(1)可以使用大小写字母,数字,$来命名

(2)不能以数字打头

(3)不能使用js保留字和关键字

(4)js是大小写区分

(5)单行注释大小写://

(6)多行注释:/*…….*/

(7)命名建议使用驼峰法,变量、方法首单词小写之后单词首字母大写,类名所有单词首字母大写

JS数据类型

基本数据类型:

原始数据类型(均使用小写)

undefined、null、boolean、number、string

关于null类型:这是当初设计的一个错误,被沿用至今。null是一个基本数据类型,其类型为Object,起作用是充当占位符!

PS:undefined是null的子类,undefined表示未定义,也就是说这个东西不存在,你就要去使用它,nill表示空,表示这个东西存在,只不过它的类型是null。也就是未初始化和已初始化的区别。

1、数值类型

123、12.1等

特殊数值:1)NaN,表示非数值类型,2)Infinity表示无穷大

第一种

var a=”abc”;
window.alert(parseInt(a));

第二种

window.alert(6/0);

2、字符串类型

可以用单引号也可以用双引号,特殊字符可以用转义符号\转义

window.alert("asada\"r");  输出asada”r 

PS:Java中字符串只能用双引号

3、布尔类型

true false

补充:通过typeof运算符可以看到变量的具体数据类型,除了上述三种常用基本类型之外还有Undefined、Null。

案例:

<html><head><script language="javascript">var num1=123;var num2="abcd";window.alert("num1是"+typeof num1);                                  window.alert("num2是"+typeof num2);var num1=false;    //体现js是动态语言:即数据类型可以任意变化window.alert("num1是"+typeof num1);     //体现js是动态语言</script></head><body></body>
</html>

复杂数据类型:

数组,对象。PS:后面会单独介绍

特殊数据类型:

Null,Undefined

JS数据类型转换

1、自动转换

例子:var a=123;  //a是数值

a=”hello”   //a的类型是string

2、强制转换

例子:var a="123”  ;

a=parseInt(a);     //使用系统函数强制转换

JS运算符

+加、-减、*乘、/除、%取余,++a前加一,a++后加一,--a减减一,a--后减一,+=加等于,-=减等于,*=乘等于,/=除等于,%=模等于,==相等,!=不等,===等同,!==不等同。等等

PS:运算符这段内容可以参考我的另一篇博客JAVA入门(1),JS和Java在这上面并没有什么太大的差别。

区别之一:

==(相等)和===(等同)的区别?

如果是==,那么他会自动尝试进行类型转换,也就是说==是比较值是否相等。

varstr="66";//string
varstr1=66;//number
alert(str==str1);//如果是两个等号,会自动尝试进行类型转换!返回结果为true

如果是===,那么它不会进行类型转换,返回false!也就是说===是比较值和类型是否相等。

注意事项:(JS和Java不同的地方)

1、在逻辑运算中:0,””,false,null,undefined,NaN均表示false,除了这些均表示为真。

2、在JS中,||究竟返回什么值,这是一个非常重要的知识点

结论:将返回第一个不为false的值(对象亦可),或者是返回最后一个值(如果全部都是false的话),返回的结果不一定是布尔值。

案例1:

var a=true;
var b=false;
window.alert(a||b);

输出true

案例2:

var a=4;
var b=90;
var c=a||b;
window.alert(c);

输出:4

案例3:

var a=0;
var b=90;
var c=a||b;
window.alert(c);

输出:90

案例4:

var a=0;
var b="";
var d=false;
var c=a||b||d;
window.alert(c);

输出:false     如果是var c=a||d||b;返回空串

JS的位运算和移位运算

按位与&、按位或|、按位异或^,按位取反~,算术右移>>,算术左移<<,逻辑右移>>>。

PS:JS和Java规范一样,具体细节可以参考我的另一篇博客Java入门(2)

JS控制语句

1、顺序控制

顺序控制就是使程序从上到下(没有方法的情况)一条一条的按顺序执行。

2、分支控制

2.1单分支

        if(条件表达式){语句;}

2.2 双分支

        if(条件表达式){语句;}else{语句;}

2.3多分支

        if(条件表达式1){语句;}else if[多个](条件表达式2){语句;}else{//else可有可无语句;}

2.4 switch

基本语法:

            switch(表达式){执行语句;case  类型1:break;       //跳出整个switch[多个]default:语句;break;}

结论:

1、JS的switch语句的数据类型可以是JS支持的任何类型(对象和数组除外)。

2、case后面的值数据类型可以是任意的(对象和数组除外)。

3、break作用是跳出整个switch

4、如果没有匹配的则执行default

3、循环控制

for循环

while循环

do while循环

for in循环

for in循环的基本语法:

    for(var a in 数组){语句;}

for in循环一般用于数组,不过就算是在数组中,也很少用for in 循环来进行遍历,一般都用for循环。

PS:前三个和Java一样,这里不再赘述,可以参考Java入门(1)。

JS函数

函数的基本概念:为完成某一个功能的代码(语句,指令)集合

基本语法:

        function  函数名(参数列表){ 语句;//函数(方法)主体return  返回值; }

说明:

1.参数列表:表示函数的输入   特别强调:参数名前不要带var

2.函数主体:表示为了实现某一功能代码块

3.函数可以有返回值也可以没有返回值

案例:

<html><head><script language="javascript" type="text/javascript">//输入两个数,再输入一个运算符,得到结果var num1=window.prompt("请输入一个数");var num2=window.prompt("请再输入一个数");num1=parseFloat(num1);num2=parseFloat(num2);var operator=window.prompt("请输入一个运算符");var res=jiSuan(num1,num2,operator);document.write("结果是"+res);//自定义函数function jiSuan(num1,num2,operator){var res=0;if(operator=="+"){res=num1+num2;} else if(operator=="-") {res=num1-num2;} else if(operator=="*") {res=num1*num2;} else {res=num1/num2;}return res;}</script></head><body></body>
</html>

PS:函数可以分为自定义函数、系统函数,系统函数可以通过查文档使用。

函数的调用方式

1.普通调用

函数名(实际参数);

2.通过指向函数的变量去调用

var myvar=函数名;

myvar(实际参数);

案例:

JS文件:

    function test(val){window.alert("你得输入是"+val);return 90;}

html调用:

    test("hello,world");  //传统的调用方式window.alert(test);  //显示函数var myvar=test;     //将函数赋值给变量window.alert(myvar);//显示函数myvar("hello,world"); //显示hello,worldvar myvar=test("abc"); //输出abcwindow.alert(myvar);  //输出90,如果函数没有返回值则返回undefined,如果有返回值,则返回什么就是什么

PS:这里有个细节问题,那就是将函数赋值给变量会出现什么样的情况。

如果是将函数名(不包括参数)赋值给变量,这时候就是该变量指向函数的地址,并且直接输出的话,会输出该函数,而不是该函数的地址。在变量后面加上参数,就能将参数传入该函数。

如果是将函数(包括参数)赋值个变量,这时候就是该变量就是该函数的返回值,如果函数没有返回值,则显示undefined,如果有返回值,则返回什么就是什么。

深入理解

1、js函数的参数列表可以是多个

2、js函数列表可以是多个,并且数据类型可以是任意类型

3、js支持参数个数可变的函数

4、js支持创建动态函数

5、js函数不可以重名

案例:

    //编写一个函数,可以接收任意多个数,并计算他们的和function abc2(){//在JS中有一个 arguments可以访问所有传入的值//window.alert(arguments.length);//得到参数的个数//遍历所有的参数var sum=0;for(var i=0;i<arguments.length;i++){sum=arguments[i]+sum;}window.alert(sum);}

调用:abc2(12,12,12,12);  结果是48,abc2();  结果是0

JS数组

一维数组

什么是数组?

数组可以存放多个数据,其在内存中的存放形式是顺序的,并且是在堆内存中。

PS:和Java不同的是,JS可以在同一个数组中,存放不同类型的元素,也就是说在同一个数组中可以同时存放数值型,字符串等。

基本语法:

    var 数组名=[元素值,元素值…] //元素的值可以是任意类型var an=[1.23, ”hello”, true, 2];

案例:

<html><head><script language="javascript">var a = [1, 2, 3, 5, 7, 9, 5];var sumA = 0;for(var i = 0; i < a.length; i++){sumA += a[i];document.writeln(a[i] + " ");}document.writeln("<br/>");document.writeln(sumA);</script></head>
</html>

PS:JS数组和Java一样都是引用传递的。而引用传递和值传递的区别就是引用传递给函数,能修改其中的值,而值传递是不能的。

这个牵涉到堆栈知识,其原理就是调用函数和被调用函数在不同的栈里面,如果是值传递,那么在被调用函数中对值进行修改,只改变被调用栈中的值,而不会影响调用函数栈的值。如果是引用传递的话,那么在被调用函数中对值进行修改,因为其是引用指向堆中元素,事实上是修改了堆中元素的值,而调用函数也是指向堆中元素,所以调用函数的值被修改了。

数组引用

基本用法:

数组的名称[下标];

比如:var a=[23,”hello”,4.5]

我们访问a[2]则输出4.5

如果我们访问a[3]则输出undefined

结论:不能访问不存在的元素,数组的下标是从0开始编号的

数组遍历

可以使用循环控制语句while,do-while,for,for in来遍历。

小结:

1、数组可以存放任意类型的数据

2、数组大小可以不必事先指定,可以动态增长

3、数组名可以理解为指向数组首地址的引用

4、数组元素是从0开始编号的

5、JS和Java不同,不需要在类型后面加上[],而且其初始化用的括号是[]中括号,而不是{}大括号。

多维数组(以二维函数为例)

二维数组可以将每个元素都视作一个一维数组。

例子:var arr = [[“abc”,123,3.2],[“a”,”b”,”c”]];

二维数组遍历

    var arr = [[“abc”,123,3.2],[“a”,”b”,”c”]];//两重for循环遍历for(var i = 0; i < arr.length; i++){for(var j = 0; j < arr[i].length; j++){document.writeln(arr[i][j] + “ ”);}document.writeln(“<br/>”);}

输出:

abc 123 4.5

a b c

排序,查找

排序,查找的内容可以参考我的另一篇博客Java入门(2),因为这是算法问题,只是在语言表达上有所不同,故不再赘述。

----------参考《韩顺平.轻松搞定网页设计(html+css+js)》

Javascritp入门相关推荐

  1. HTML,CSS,JavaScript学习笔记--导航

    陆陆续续花了一个月的时间,把前端三大件HTML,CSS,JavaScript的基本语法学完了,感觉还是收益颇丰的.但是其中的知识远远不止这些,以后学习的过程中在进行补充吧. HTML,CSS学习笔记 ...

  2. 零基础AJAX入门(含Demo演示源文件)

    零基础AJAX入门(含Demo演示源文件) 作者:一点一滴的Beer  个人主页:http://www.cnblogs.com/beer 摘要:因为笔者的大四毕业设计是做WebGIS系统,用过Web版 ...

  3. React一天入门笔记(一) | 基础知识点

    React基础知识点 目标 能够说出React是什么 能够说出React的特点 能够掌握React的基本使用 能够使用React脚手架 什么是React (★★★) React是一个用于构建用户界面的 ...

  4. JavaScript基础教程——入门必看篇

    JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题. ...

  5. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  6. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  7. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  8. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  9. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

最新文章

  1. UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte
  2. 计算机网络基础 单选题) 作业,南开大学《计算机网络基础》在线作业及答案
  3. android第三方应用,Android 第三方应用接入微信平台研究情况分享(一)
  4. 如何应对视觉深度学习存在的问题
  5. iOS即时通讯输入框随字数自适应高度
  6. linux 启动tomcat 怎么显示日志文件,随着LINUX的启动,打开一个终端显示TOMCAT的日志文件,请问如何做到?...
  7. 02HTML 超链接与图像标记各是什么,【HTML篇】3.HTML的图片标签、超链接标签
  8. 教你如何保持Tuxera NTFS For Mac软件的更新
  9. 计算点到SVM超平面的距离
  10. python turtle输出坐标_如何在Python/turtle中使用坐标列表绘制形状
  11. JDK 8和Java 8的下载与安装
  12. bada开发tips
  13. 【运筹学】整数规划 ( 整数规划求解方法 | 指派问题 )
  14. 坚果云和百度网盘的比较
  15. Python中 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape错误解决方法
  16. cad批量打印_CAD批量打印
  17. 浙江特大套路贷案具体经过是什么样?套路贷与普通贷款有什么区别
  18. 学姐写毕业论文,图表在PDF上,复制下来格式全乱,头疼了一晚,幸亏有我
  19. react package.json 里面的小尖角号和波折号各什么意思
  20. 可持续发展的“孤勇者”,亚马逊云科技并不孤单

热门文章

  1. 使用docker运行dotnetcore站点
  2. c语言 结构体练习之 实现产品销售记录的相关功能
  3. tampermonkey脚本header介绍
  4. git 命令commit_Git Commit命令解释
  5. 如何在面试时保持冷静_如何保持冷静并成为安全工程师
  6. ruby 查看csv文件_如何使用CSV和Ruby构建终端游戏
  7. 【JAVA】关于向上转型与向下转型
  8. 尚学堂java 参考答案 第八章
  9. windows安装java环境
  10. python语言易错知识点强化