01-JS基础语法

一、JavaScript的概念和执行原理

JavaScript的概念和执行原理
(1)JavaScript也是程序语言中的一种,但是JavaScript是嵌入到HTML语言中,直接通过浏览器运行。
(2)JavaScript的执行原理:当客户端向服务器端请求某个页面时,服务器端将整个页面中包含JavaScript的脚本代码作为响应内容,发送回客户端机器,客户端浏览器根据发回的网页文件从上往下逐行读取并解析其中的html或者脚本代码。

0001.PNG

二、JS代码编写位置

(1)直接写在页面标签里面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>脚本代码的位置:直接写在页面标签里面</title>
        <!--脚本代码的位置:直接写在页面标签里面-->
        <script type="text/javascript">
            alert("欢迎进入JavaScript编程的世界!");
        </script>
    </head>
    <body>

    </body>
</html>

(2)写在外部JS文件中

外部的JS文件:

alert("欢迎进入JavaScript编程的世界!");

HTML文件:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>脚本代码的位置:写在外部js文件中</title>
        <!--脚本代码的位置:写在外部js文件中-->
        <script type="text/javascript" src="js/Demo02.js"></script>
    </head>
    <body>

    </body>
</html>

三、将JS脚本代码作为A标签的属性值

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>将脚本代码作为a标签的属性值</title>
    </head>
    <body>
        <!--将脚本代码作为a标签的属性值-->
        <a href="javascript:document.write('我就知道你喜欢我');">喜欢我就点击我吧</a>
        <br/><br/>
        <a href="javascript:alert('我就知道你喜欢我');">喜欢我就点击我吧</a>        
    </body>
</html>

四、JS中数据类型和变量

(1)JavaScript是弱类型语言,在定义变量的时候不用确定数据类型,在赋值的时候根据值自动确定其类型 。

(2)数据类型有:undefined,number,boolean,string,object

(3) var是声明变量的关键字 。

(4)给变量命名的时候,需要遵循如下规则:

【1】 第一个字符必须是一个字母、下划线(_)或一个美元符号$。 

【2】 后面的字符可以是字母、下划线、美元符号或数字。 

【3】 区分大小写。 

【4】 不能与关键字同名 ,如while、for和if等。 

代码演示:

var msg;
alert(typeof msg);   //undefined类型
alert(typeof xyz);   //undefined类型
var num = 211;  //number类型
alert(typeof num);

var num = 211.11;  //number类型
alert(typeof num);

v = 2;
var y = 'a';
var r = v * y;
//结果为not a number,但是数据类型仍然为number类型
alert(r);  //NaN
alert(typeof r);  //number类型
var flag = true;  //boolean类型,取值只能是true或者false
alert(typeof flag);
var str = "JavaScript";  //string类型
alert(typeof str);

var str = 'JavaScript';  //string类型
alert(typeof str);
var now = new Date(); //获取当前时间:object类型
alert(now + "\n" + typeof now);
            
var obj = null;
alert(typeof obj + "\n" + obj);  //object类型

var arr = [11,22,33,44]; //object类型
alert(typeof arr);
//创建你自己的个人资料,把各项资料放入相应变量中,并使用表格打印出来。
//个人资料包括 学号、姓名、出身年月、身份证号码、HTML考试成绩
var myNo = "001";
var myName = "刘德华";
var myBirth = "1977-8-7";
var myCode = "420109197708071547";
var htmlScore = 95;
document.write("<table border='1' align='center'>");
    document.write("<tr>");
        document.write("<td>学号</td> <td>姓名</td> <td>出身年月</td> <td>身份证</td> <td>HTML考试成绩</td>");
    document.write("</tr>");
    document.write("<tr>");
        document.write("<td>"+myNo+"</td>");
        document.write("<td>"+myName+"</td>");
        document.write("<td>"+myBirth+"</td>");
        document.write("<td>"+myCode+"</td>");
        document.write("<td>"+htmlScore+"</td>");
    document.write("</tr>");                
document.write("</table>");

五、运算符

(1)算数运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

表格中的实例假设整数变量A的值为10,变量B的值为20:

操作符 描述 例子
+ 加法 - 相加运算符两侧的值 A + B 等于 30
- 减法 - 左操作数减去右操作数 A – B 等于 -10
* 乘法 - 相乘操作符两侧的值 A * B等于200
/ 除法 - 左操作数除以右操作数 B / A等于2
取余 - 左操作数除以右操作数的余数 B%A等于0
++ 自增: 操作数的值增加1 B++ 或 ++B 后B等于 21(区别详见下文)
-- 自减: 操作数的值减少1 B-- 或 --B 后B等于 19(区别详见下文)

其中+运算符,除了数学运算,还可以进行数据的拼接,例如:

var a = 10;
var b = "10";
alert(a+b);  //此处不进行数学运算,进行拼接,结果将打印1010

此处和强类型语言不同,强类型语言例如C#,此结果应该为2,但是在JS中结果为2.5,例如:

var a = 5;
var b = 2;
alert(a/b);   //将打印结果2.5    

自增++运算符和自减--运算符,符号写在前面和后面的区别如下:

++在前,先自增,在运算; ++在后,先运算,在自增 (--运算符同理)

var a = 10;
++a;       //或者a++,执行结果一样
alert(a);  //打印11
var a = 10;
var b = a++;
alert(a);   //打印结果11
alert(b);   //打印结果10
var a = 10;
var b = ++a;
alert(a);   //打印结果11
alert(b);   //打印结果11

(2)赋值运算符

操作符 描述 例子
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C - A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A,C 与 A 同类型时等价于 C = C / A
%= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A

例如:

var a = 1;   //正确
// =赋值运算符左边只能是变量,不能是数据常量。
1 = a;  //错误
a + 1 = 2;  //错误
var a = 10;
var b = 5;
a += b;   // 等价  a = a + b;
alert(a);   //打印15
alert(b);   //打印5

(3)关系运算符

表格中的实例整数变量A的值为10,变量B的值为20:

运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (A> B)为假。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (A <B)为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (A> = B)为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。

=与==的区别:

a = b;   //代表将b的值赋给a 
a == b   //代表比较a和b的值是否相等

(4)逻辑运算符

下表列出了逻辑运算符的基本运算,假设布尔变量A为true,变量B为false

操作符 描述 例子
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B)为假。
| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A && B)为真。

例如:

var a = 20;
var b = 500;
alert(a > b && a > 0);   //打印false
alert(a > b || a > 0);    //打印true
alert(!(a > b || a > 0));  //打印false

(5)三目运算符

该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

条件表达式 ?结果1 :结果2 (表达式成立,执行结果1,否则执行结果2),例如:

var a = 10;
var b = 20;
var c = a > b ? a : b;
alert(c);   //此处打印20

六、选择分支结构

(1)IF单分支结构

获取当前日期,判断当前日期是否为自己的生日,如果是则提示"生日快乐"

var now = new Date();
var nowMonth = now.getMonth();
var nowDay = now.getDate();
if(nowMonth+1==6 && nowDay==22)  //月份从0开始编号
    alert("生日快乐!");

(2)IF双分支

获取当前时间,判断是否为星期六,星期日,如果是提示"我要出去浪",否则提示"努力工作"

var now = new Date();
var nowWeek = now.getDay();  //星期从0开始编号,并且星期天是一个星期第一天
if(nowWeek == 0 || nowWeek == 6)
    alert("我要出去浪!");
else
    alert("努力工作!");

(3)if多分支

获取当前时间,如果0点-12点提示:早上好;如果12点-14点提示:中午好;如果14点-18点提示:下午好;剩下时间提示:晚上好。

var now = new Date();
var nowHour = now.getHours();
if(nowHour < 12)
    alert("早上好!");
else if(nowHour < 14)
    alert("中午好!");
else if(nowHour < 18)
    alert("下午好!");
else
    alert("晚上好!");

(4)if嵌套

获取当前时间:

如果是工作日(星期一到星期五)

    10点之前提示:"开会中..."    10点之后提示:"努力敲代码中..."

如果是双休日(星期六星期天)

    10点之前提示:"还在睡梦中..."  10点之后提示:"游戏中..."
var now = new Date();
var nowWeek = now.getDay();
var nowHour = now.getHours();
if(nowWeek >=1 && nowWeek <=5)
{
    if(nowHour < 10)
        alert("开会中...");
    else
        alert("努力敲代码中...");
}
else
{
    if(nowHour < 10)
        alert("还在睡梦中...");
    else
        alert("游戏中...");        
}

(5)switch case结构

获取当前时间星期几,自动提示当天的课表信息,课表如下:

星期一:语文、体育、英语
星期二:数学、化学、计算机
星期三:政治、历史、物理
星期四:语文、数学、英语
星期五:计算机、英语、美术
星期六和星期天:休息

var now = new Date();
var nowWeek = now.getDay();
switch(nowWeek)
{
    case 1: alert("语文、体育、英语"); break;
    case 2: alert("数学、化学、计算机"); break;
    case 3: alert("政治、历史、物理"); break;
    case 4: alert("语文、数学、英语"); break;
    case 5: alert("计算机、英语、美术"); break;
    default: alert("休息"); break;
}

七、循环结构

(1)while循环和do...while循环

while循环打印1-10.

var i = 1;
while(i <= 10)
{
    document.write(i+"<br />")
    i++;
}

do...while循环打印1-100.

var i = 1;
do
{
    document.write(i+"<br />")
    i++;
}while(i <= 10);

while和do...while区别:

【1】while先判断后执行,do...while先执行后判断

【2】如果将上述程序修改成var i = 11,while循环将一次都不执行,而do...while会至少执行一次。

利用while或do...while循环解决如下问题:

假设迟到一次罚款10元,第二次罚款20元,第三次40元,依次翻倍罚款,计算迟到第几次的时候总罚款金额会超过10000元,并显示总罚款金额。

var fakuan = 10;
var sum = 10;
var i = 1;
do
{
    i++;
    fakuan = fakuan*2;
    sum = sum + fakuan
}while(sum < 10000);
alert("第" + i + "次罚款总金额超过10000,罚款总金额为:" + sum);

(2)for循环

for循环打印1-10:

for(var i = 1;i<= 10;i++)
{
    document.write(i+"<br />");
}

使用for循环打印九九乘法表:

for(var i = 1;i<=9;i++)
{
    for(var j = 1;j<=i;j++)
    {
        document.write(i + "*" + j + "=" + i*j);
        if(i*j <=9)
            document.write("&nbsp;&nbsp; ");
        else
            document.write("&nbsp;&nbsp;");
    }
    document.write("<br>");
}

(3)break和continue

break和continue区别:

【1】break:退出整个循环

【2】continue:退出本次循环,马上进入下一次循环

例:

for(var i = 1;i<=10;i++)
{
    if(i == 5)
        break;
    alert(i);
}
//备注:对话框弹出4次
for(var i = 1;i<=10;i++)
{
    if(i == 5)
        continue;
    alert(i);
}
//备注:对话框弹出9次,i=5的时候对话框不会弹出

1-100之间偶数相加,求加到几的时候和超过1000:

var sum = 0;
for(var i=1;i<=100;i=i+2)
{
    sum = sum + i;
    if(sum > 1000)
    {
        alert("加到" + i + "的时候,和超过1000,结果为:" + sum);
        break;
    }
}

1-100之间偶数相加,能被7整除的数字不参加累加运算,求和:

var sum = 0;
for(var i = 1;i <= 100;i=i+2)
{
    if(i%7 == 0)
        continue;
    sum = sum + i;
}
alert("结果为:" + sum);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容