javascrpt基础入门

JavaScript 是一门脚本语言,同HTML语言一样,需要浏览器或者JavaScript解释器,解释执行。

1. 第一个JavaScript程序:

<html>

<body>

<script type="text/javascript">

document.write("Hello World!")

</script>

</body>

</html>

<script>,</script>是一对HTML标签,用于在HTML文档中引入JavaScript,这里type属性,指定了语言为JavaScript。这是写JavaScript的一种方式。

做一个简单的讲解:

1) JavaScript语句后不一定要接分号,比如:

document.write("Hello World"),也可以加分号,这符合大多数程序员的习惯,不过如果一行有多个语句的时候,一定要加分号。也就是JavaScript可以通过行和分号来区分不同的语句。

2) 面向对象(有些书籍认为JavaScript是基于对象的)

可以通过 object.method() 来调用某对象的方法。上面的document就是一个对象,他有一个write方法,用于输出字符到HTML文档上,注意,我们不能通过document.write("\n")来在HTML文档中产生一个换行,而需要document.write("<br />")。document.wirte() 是很有用的,比如我们可以使用它来动态生成一个表格。

2. <script>标签的位置,我们知道每一个HTML标签都会有一个和一些对应的放置位置。<script>也是。

1) <script>放置在<head></head>间,页面载入的时候不会被运行,但是可以被调用。运行将从调用开始处运行,到</script>标签结束。

2) <script>放置在<body></body>间,页面载入的时候被运行。

3) <script>放置在<head></head>外,页面载入的时候被运行,但是通常我们不把<script>标签写在其他不应该写的地方,虽然,主流的浏览器都支持这样的做法。

3. 访问外部脚本

另外一种写JavaScript的方式,就是把JavaScript代码保存在一个文本文件中,然后用<script>标签导入。比如:

<script src="xxx.js">

</script>

表示,我们现在有一个xxx.js的文件,里面保存的是JavaScript代码,通过这样的方式可以导入xxx.js文件中的JavaScript代码。

现在开始介绍JavaScript:

1) 变量

JavaScript是大小写敏感的。所以变量是区分大小写的,这个和HTML语言不一样,另外和java一样,JavaScript变量名字要使用字母或者是下划线开头。我们进行程序设计的时候,无须指定变量类型,申明变量用关键字 var,比如:

var str

str = "hello"

或者这样定义

var str = "hello"

甚至可以: str = "hello" 来直接定义一个变量。

2) 变量的作用域

变量的作用域从变量的声明或者定义开始,到本个块结构结束为止,比如

{ var hi

..

}

// 这里hi变量被销毁。

因此,我们可以在所有的块之外定义全局变量。

3) 常量

十六进制数: 0x11(0x开头的数)

十进制数:11(正常书写方式)

八进制数:011(0开头的数)

true : 表示真

false : 表示假

null :表示一个变量没有指向任何对象

undefined :表示方法没有返回值,或者变量没有被声明或定义

NaN :表示不是一个数字

4) 控制语句(大多同于java)

a. if ... elseif (condition1)

语法:

if (condition1)

{

code to be executed if condition1 is true

}

else if (condition2)

{

code to be executed if condition2 is true

}

else

{

code to be executed if condition1 and

condition2 are not true

}

b. switch

switch(n)

{

case 1:

execute code block 1

break

case 2:

execute code block 2

break

default:

code to be executed if n is

different from case 1 and 2

}

5) 运算符(本图表源于 http://www.w3schools.com/js/js_operators.asp)

Arithmetic Operators

Operator Description Example Result

+ Addition x=2

y=2

x+y 4

- Subtraction x=5

y=2

x-y 3

* Multiplication x=5

y=4

x*y 20

/ Division 15/5

5/2 3

2.5

% Modulus (division remainder) 5%2

10%8

10%2 1

2

0

++ Increment x=5

x++ x=6

-- Decrement x=5

x-- x=4

Assignment Operators

Operator Example Is The Same As

= x=y x=y

+= x+=y x=x+y

-= x-=y x=x-y

*= x*=y x=x*y

/= x/=y x=x/y

%= x%=y x=x%y

Comparison Operators

Operator Description Example

== is equal to 5==8 returns false

=== is equal to (checks for both value and type) x=5

y="5"

x==y returns true

x===y returns false

!= is not equal 5!=8 returns true

> is greater than 5>8 returns false

< is less than 5<8 returns true

>= is greater than or equal to 5>=8 returns false

<= is less than or equal to 5<=8 returns true

Logical Operators

Operator Description Example

&& and x=6

y=3

(x < 10 && y > 1) returns true

|| or x=6

y=3

(x==5 || y==5) returns false

! not x=6

y=3

!(x==y) returns true

*字符串时候相等,用"==="或者"=="都可以,这不同于其他的语言。

注意,不要小看上面的运算符号,他们关系极其复杂,比如:

a = "1"

a -= 1

alert(a);  // 结果是0

但是 a= "1"

a += 1

alert(a); // 结果是11

再比如:

a = true

a -= 1

alert(a) // 结果是0

另外还有:

"1" != 1 // 结果是false

为了搞清这错综复杂的关系,必须先了解一个东西:JavaScript中任何类型之间都可以相互转换。显示的使用:

a) Number()  // 转化成为数,这里的数包括整数和浮点数

b) Boolean() // 转化成为boolean值

c) String() // 转化成为字符串

d) Object() // 转化成为

这3个方法,可以接受任意类型的参数,甚至是一个对象。上面的"1" + 1的操作,实际上进行的类型的隐式转换,跟详细的说就是,隐式的使用了Number(),Boolean(),String(),Object()来进行类型的转化。

这里对转化做一个总结:

转化前 转化后

非0 true

0 false

true 1

false 0

"123"或"123.2"这类的字符串 123或123.2这类的数字

123或123.2这类的数字 "123"或"123.2"这类的字符串

true "true"

false "false"

如何非空字符串 true

"" false

null false

NaN false

undefined false

非空对象 true

转化是一个问题,当使用运算符还有一个问题就是向谁转化的问题,比如:

"false" == false

假如这里是隐式的把"false"字符串转化成为boolean类型,那么就是 true == false 结果为 false;假如这里是隐式的把 false转化成为字符串 "false" 这里就是 "false"=="false",结果为 true。因此如何转化是个问题。我们先看看下面的例子:

alert(false=="false");  // 结果为false,也就是把字符串转化成了boolean值

a = false + "1";

alert(a); // 结果为"false1",也就是把boolean值转化成为了字符串

这是一个头痛的问题,因为他们转化尽然没有统一的标准,而会因为不同的运算符号而不同!

有一种办法就是,尽量避免运算符号的隐式转换,每次使用前,用String(),Number(),Boolean()进行转化,尽量使得运算符两边类型一样。因此,我们必须熟悉上表中各个类型的转化规则。

6) 对象到基本类型的转化

在讲到对象之前,就开始这个话题,显然有些不明智,读者可以先了解JavaScript对象之后,再来了解这个问题。

前面一个表格的最后一行:非空对象转化成为true,也就是说明了,对象到boolean类型的转化过程,这是比较简单的。

a) 对象到数字

调用对象的valueOf()方法,假如没有得到数字,就调用对象的toString()方法,然后传递给Number()。

b) 对象到字符串

调用对象的toString()方法。

1) 循环语句:

a) for

for (var=startvalue;var<=endvalue;var=var+increment)

{

code to be executed

}

for有另外一个用法,先看一个例子:

for(var cur in window){

document.write(cur+"<br />");

}

运行一下就可以看到效果了,那这个是什么意思?就是列出对象window里面的所有属性(properties),更加详细的定义是:

for in 语句可以迭代一个对象的所有属性名或者一个数组中的所有元素(得到数组的下标)。

b) while

while (var<=endvalue)

{

code to be executed

}

c) do ... while

do

{

code to be executed

}

while (var<=endvalue)

2) JavaScript中的方法:

function functionname(var1,var2,...,varX)

{

some code

}

使用关键字 function 定义一个方法。使用 return 返回一个值。例如:

function f(n){

if(n <= 1)

return 1;

return f(n-1)*n;

}

调用方法,使用方法名和参数进行调用,比如 f(10)

参数列表是很有趣的,我们看一个方法:

function maxNum(){

max = arguments[0];

for(i=1;i<arguments.length;i++){

if(max < arguments[i])

max = arguments[i]

}

return max

}

document.write(maxNum(4,3,5))

结果输出了5。这说明了,方法可以接受超过参数列表中参数数量的参数。使用arguments.length得到实际输入的参数的数量,使用arguments[i]得到第i个参数。

3) 常用的方法:

alert("hi");  // 对话框

eval("...");  // 把参数当作JavaScript代码来运行。

parseInt("123"); // 把参数转化成为整数

parseFloat("123.123") //  把参数转化成为浮点数

例如:

eval("alert(‘hi‘)");

eval("(1+3)*4");  // 注意 (1+3)*4 也是JavaScript代码。

这里parseInt和parseFloat可以解析"abc123"这类的字符串,但是使用Number()无法解析含有非数字字符的字符串,比如:

parseInt("abc123"); // 得到123

Number("abc123"); // 得到NaN

现在你可以进入更深的层次学习JavaScript了。

时间: 2024-10-12 10:05:29

javascrpt基础入门的相关文章

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

Android基础入门教程——2.3.12 Date &amp; Time组件(下)

Android基础入门教程--2.3.12 Date & Time组件(下) 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来继续学习Android系统给我们提供的几个原生的Date & Time组件,他们分别是: DatePicker(日期选择器),TimePicker(时间选择器),CalendarView(日期视图),好吧, 其实一开始让我扣这几个玩意我是拒绝的,因为在我的印象里,他们是这样的: 简直把我丑哭了,有木有,终于知道为什么那么多人喜欢自定义这种类型的

Android基础入门教程——2.1 View与ViewGroup的概念

Android基础入门教程--2.1 View与ViewGroup的概念 标签(空格分隔): Android基础入门教程 本节引言: 告别了第一章,迎来第二章--Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突发奇想,直接翻译官方文档对 这两个东西的介绍吧,对了,天朝原因,google上不去,Android developer上不去,我们可以 改hosts或者用vpn代理,当然也可以像笔者一样使用国内的API

DAX基础入门 – 30分钟从SQL到DAX — PowerBI 利器

看到漂漂亮亮的PowerBI报表,手痒痒怎么办?! 有没有面对着稀奇古怪的DAX而感到有点丈八金刚摸不着头脑或者干瞪眼?! 有没有想得到某个值想不出来DAX怎么写而直跳脚!? 看完这篇文章,你会恍然大悟,捂脸偷笑.呼呼呼~ 前言: 这篇文章对于具有一点SQL查询基础人会十分容易理解,譬如:掌握SELECT,SUM,GROUP BY等. 注:此文不涉及到Filter Context(筛选上下文)的介绍. 正文: 对于对SQL有一定了解的人来说,咋看DAX,怎么都不习惯. 但是,如果理解以下几个后,

Linux 基础入门----推荐课程

Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https://www.shiyanlou.com/courses/1/labs/1/document 第2节 基本概念及操作 https://www.shiyanlou.com/courses/1/labs/2/document 第3节 用户及文件权限管理 https://www.shiyanlou.com/

从零基础入门JavaScript(1)

从零基础入门JavaScript(1) 1.1  Javascript的简史 1995年的时候   由网景公司开发的,当时的名字叫livescript    为了推广自己的livescript,搭了java顺风车,改名为javascript 与此同时,     微软因此在自身的浏览器里,也推出了自己的脚本语言 jscript 1997年时候,  由ECMA(欧洲计算机制造商协会)出面,推出了一套javascript的规范,Ecmascript ,规范提出js由三部分组成 JS的组成: ECMAS

saltstack之基础入门系列文章简介

使用saltstack已有一段时间,最近由于各种原因,特来整理了saltstack基础入门系列文章,已备后续不断查阅(俗话说好记性不如烂笔头),也算是使用此工具的一个总结.saltstack的前六篇文章主要讲述了saltstack的安装.远程执行.配置管理.数据系统以及jinjia模板等知识点,从第七篇往后的文章是一些使用saltstack的案例,包括系统初始化,rpm包以及源码安装等. 博客中saltstack系列的文章,适合初学者从零开始学习直到逐渐熟练使用.文章具有一定的连贯性,如果没有任