2.JavaScript的一些基本语法

来源:互联网 发布:淘宝自出版平台 编辑:程序博客网 时间:2024/06/07 11:43

一些应该掌握的知识点

  • 五种基本值类型:Number,String,Boolean,null,undefined;复杂数据类型:Object

  • 原始值是不可改变的,是栈数据(栈,先进后出,后进先出)

  • 值类型,把值传递给另一个变量(赋值),相当于分配了一块新的内存空间

  • String类型的特殊性:因为字符串大小可变,所以不能被存储在具有固定大小的变量中。且JS只复制对字符串的引用,而不是字符串的内容。但字符串不可变,因此String是行为与基本类型相似的不可变引用类型。(注:原始值是不可变的,任何方法都不能改变原始值内容,像String的方法,只能返回新的字符串,而不能修改原始字符串)

  • 引用类型,相当于让指针指向另一变量,拥有同一块内存空间,eg.Object,Array,Function

  • 引用值是堆数据(堆,先进先出,后进后出)

  • 关于undefined,null,NaN

    • 未定义的值和定义未赋值的为undefined
    • null是一种特殊的object
    • NaN是一种特殊的number
    • 关于null与undefined区别的一篇博客参考:JS中Null与Undefined的区别
  • JS语句的两个基本规则

    • 语句后面要用分号’;’结束
    • JS语法错误会引发后续代码终止,但不会影响其他JS代码块
  • 用一个变量去操作一个数字的时候,最多只能操作小数点前16位,和小数点后17位

  • 加号’+’可以进行数学运算和字符串连接,任何数据类型加字符串都等于字符串

  • 右加加(减减):先参与运算,操作符本身再+1;左加加(减减):操作符先自+1,再参与运算

  • 会被认定为false的值:undefined, null, NaN, ”, false

  • 逻辑与’&&’还有一个功能,假设a = b && c, 假设b的值为真,则直接把c的值赋给a

  • for (1;2;3){},执行1, 判断2,真则执行{},再执行3,判断2

  • 所键盘上有字符都是一个字节;若当前字符位的unicode大于255,那么该字节符长度为2,否则该字节符长度为1

  • 一些简单的代码示例:设定a,b两变量并分别赋值,再把a,b两值互相调换

    • 方法一

          var a = 123;//创建变量并赋值    var b = 234;    var c;    c = a;//把a赋值给c    a = b;    b = c;
    • 方法二

          var a = 123;    var b = 234;    var c;    a = a + b;//把a+b的值赋给a    b = a - b;    a = a - b;
  • “==”与”===”的区别

    • ”==”称作相等运算符,用它检测两个操作数是否相等,允许进行类型转换
    • “===”称为严格相等运算符,用它检测两个操作数是否严格相等
  • 一个if条件语句示例

var num = parseInt(window.prompt());if (num >= 90) { //圆括号'()'内设定条件,如成立则执行大括号'{}'语句    document.write('<b><i>日薪百万</i></b>');//window窗口显示相关内容,并对文本内容加粗加斜}else if (num < 90 && num >= 80) {//if语句条件不成立,则执行else if语句    document.write('<b><i>周薪百万</i></b>');}else if (num >= 70) {    document.write('<b><i>月薪百万</i></b>');}else if (num >= 60) {    document.write('<b><i>年薪百万</i></b>');}else {//若其他条件皆不成立,则执行该语句    document.write('<b><i>你就是个菜逼</i></b>');   }
  • 一个switch条件语句示例
var n = window.prompt('选择逃课的时长,请输入数字1~7');switch (n) { //设置表达式,并判断与下列case语句中哪一个case匹配    case '1':        document.write('一节课');        break; //执行完本条case语句后停止执行下一个case    case '2':        document.write('半天');        break;    case '3':        document.write('一天');        break;    case '4':        document.write('一周');        break;    case '5':        document.write('一个月');        break;    case '6':        document.write('一学期');        continue; //停止执行该条语句并执行下一个case    case '7':        document.write('一学年');        break;     default: //当所有的case都不匹配时默认执行该语句        document.write('你还是退学吧')    };
  • 一个for循环语句示例
 var count = 0;   var times = 0;   for (var i = 0; i<100;) { /*在圆括号"()"中创建变量i并赋予初值0,然后判断是否满足条件i<100,                              如满足则开始执行大括号"{}"中的语句,执行完成后再次判断是否满足                              条件i<100 */       count += i++; //完成一次count=count+i后,i再自加一       times++;       if (count >= 300) {           i = 100;           document.write(times);           document.write('<br>')                   document.write(count)       }}
  • do…while语句用法(注:do…wihile语句是循环语句的变体)
do {}while () {} /*在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后                   在while()内检查条件是否为真,如果条件为真的话,就会重复do...while                   这个循环,直至while()为假 */





一些练习

  • 计算2的N次幂
var n = parseInt(window.prompt('计算2的N次幂,请输入N的值')); /* 声明一个变量n,在window                                                               窗口的弹窗中输入一个整型,                                                               并赋值给n */var m = 1;var i;if (n >= 0) {    for (i = 0; i < n; i++) {        m = m * 2;    }}else {    for (i = 0; i > n; i--) {        m = m * (-2);    }}document.write('2的',n,'次幂为',m,'<br>');//window窗口中输出语句"2的n次幂为m"并折行
  • 计算N阶乘
var n = parseInt(window.prompt('计算N的阶乘,请输入N的值'));var m = n;if (n > 0) {    for (i = 1; i < m; i++) {        n = n * (m - i);    }    document.write(m,'的阶乘为',n,'<br>');}else {    document.write('不能输入小于或等于0的数','<br>');}
  • 计算斐波那契数列的第N项
var n = parseInt(window.prompt('你需要斐波那契数列的第几项?,请输入N值'));var m = 1;var a = 1, b = 1;if (n > 0) {    for (var i = 1; i < n - 1; i++) {        var m = a + b;        a = b;        b = m;    }    document.write('斐波那契数列的第',n,'项为',m,'<br>');}else {    document.write('不能输入小于或等于0的数','<br>');}
  • 输入一个三位数,对输入值反向输出
var n = parseInt(window.prompt('请输入一个个位数不为零的三位正整数'))var c;var a = n % 10;var b = (n - a) % 100;c = (n - a - b) / 100;if (n > 100 && a != 0) {    var m = a * 100 + b + c;    document.write('数值',n,'的反向输出为',m,'<br>');}else {    document.write('出错','<br>')}
  • 输入三个数,并输出其中的最大值
alert('a,b,c三数比较大小')var a = parseFloat(window.prompt('a,b,c三数比较大小,请输入a的值'));var b = parseFloat(window.prompt('a,b,c三数比较大小,请输入b的值'));var c = parseFloat(window.prompt('a,b,c三数比较大小,请输入c的值'));var n = a;if (a < b && b > c) {    n = b;}else if (a < c) {    n = c;}document.write('a,b,c中的最大值为',n,'<br>');
  • 给定任意正整数N,取0到正整数N之间的质数
var n = parseInt(window.prompt('取零到正整数N之间的质数'));document.write('0到',n,'之间的质数为');for (var i = 1; i <= n; i++) {    var m = 0;    for (var a = 1; a <= i; a++) {        if (i % a == 0) {            m++;        }    }    if(m == 2) {        document.write(i + ' ');    }}document.write('<br>');
  • 用”typeof”判断一些值类型
n = window.prompt('别乱按,我看着你呢!')switch (n) {    case '1': alert(typeof(a));break;    case '2': alert(typeof(undefined));break;    case '3': alert(typeof(NaN));break;    case '4': alert(typeof(null));break;    case '5': var a = '123abc';alert(typeof(+a));break;    case '6': alert(typeof(!!a));break;    case '7': alert(typeof(a + ''));break;    case '8': alert(1 == '1');break;    case '9': alert(NaN == NaN);break;    case '10': alert(parseInt('123abc'));break;    case '11': var num = 123123.3545789; alert(num.toFixed(3));break;    default: alert('你再瞎按试试?瞧我不弄死你!');};
原创粉丝点击