zoukankan      html  css  js  c++  java
  • JS练习题

    1.注意:只要+【加号】两边没有字符串,我们就按正常的数字相加就OK了

    1 <body>
    2     <script type="text/javascript">
    3         var str = false +1;
    4         document.write(str);
    5     </script>
    6 </body>
    View Code

    上面这道题实际上带有隐世类型转换,false转换为0,然后和1相加,所以结果为1;

    2.注意:运算符之间的优先级

    1 <body>
    2     <script type="text/javascript">
    3         var demo = false ==1;
    4         document.write(demo);
    5     </script>
    6 </body>
    View Code

    上面这道题显然==判断是否相等的优先级要高于=赋值运算符,所以先看false是否等于1【false转换成数字为0,显然不等于1,返回false】,然后将比较的结果赋值给变量demo,所以demo的值为false;

    3.注意:只有一种情况我们在不定义变量的情况下,使用变量是不报错的,就是使用typeof(a)这种情况,而且返回值为字符串类型的undefined;

    注意:虽然null是一个原始类型,但是当null交给typeof的时候,typeof总是认为null是给Object占位使用的,所以我们使用typeof(null)的时候,返回值是Object;

    注意:true转换为数字是1,false转换成数字是0,那么-true【负true就是-1】,一般情况下前面加+号或者-号的都是将其转换为数字【隐式转换】,所以+undefined是想将undefined转换为数字【Number】,当然undefined是转换不成Number数字的,所以返回值是NaN【not a number】,而-1+NaN=NaN,NaN+""【空串】得到的结果就是"NaN"的字符串!所以如下代码:

    1 <body>
    2     <script type="text/javascript">
    3         if(typeof(a)&&-true + (+undefined) +""){
    4             document.write("基礎扎實");
    5         }
    6     </script>
    7 </body>
    View Code

    所以if条件中的语句就成了"undefined"字符串 和 “NaN”字符串做与操作,由于是两个字符串做与操作,所以if条件得到的返回值是true,那么就可以执行if语句体,从而可以输出:基础扎实!

    1 <body>
    2     <script type="text/javascript">
    3         if(11 + "11"*2 == 33){
    4             document.write('基础扎实');
    5         }
    6     </script>
    7 </body>
    View Code

    注意:凡是用到*【乘号】的,我们一般都是将*【乘号】两边的东西转换为数字,所以这里的字符串"11"会被隐式转换为数字11,然后乘以2,得到22,然后和前面的11相加,得到33再和33比较是否相等,显然是相等的,所以会执行if语句内部的输出,最终会输出:基础扎实!

    隐式转换:除了+号之外的运算符,如-,*,/,%,等运算符两边的东西都是要先隐式转换为数字,然后再进行计算的!如下所示:

    "11"-"2":实际上是将字符串11和字符串2转换为数字11和数字2,然后再进行相减!

    4.注意:""【空串】和"   "【空格字符串不是一回事】,空串转换为布尔值是false,而空格字符串转换为布尔值

     是true;所以!""是true,而 !"  "是false,而 !!""则是false,!!"  "则是true,所以如下代码:

    1 <body>
    2     <script type="text/javascript">
    3         !!" " + !!"" - !!false || document.write('你觉得能打印,你就是猪');
    4     </script>
    5 </body>
    View Code

    ||前面的是:true + false -false其实就是转换为数字再计算,得到1,||【或】好前面是1,相当于true,所以就不会执行||【或】后面的代码,所以不会输出后面的内容!

    5.CSS的属性值有几个?分别是啥?代表啥含义:

      ①.inline【行内元素】

      ②.inline-block【行内块元素】

      ③.block【块元素】

      ④.none【样式消失,且不占用空间】

    ============================================新知识点=========================================

      6.立即执行函数:

    1 <body>
    2     <script type="text/javascript">
    3         var sum = (function abc(a,b,c){
    4             var d = a+b+c;
    5             return d;
    6         }(1,2,3));
    7         console.log(sum)
    8     </script>
    9 </body>
    View Code

    注意:立即执行函数有两种形式如下所示:

    1 <body>
    2     <script type="text/javascript">
    3         //立即执行函数
    4         (function abc(){}()); //第一种形式,W3C建议使用这一种
    5         (function abc(){})();//第二种形式
    6     </script>
    7 </body>
    View Code

     注意:以下使用方法是错误的,

    1 <body>
    2     <script type="text/javascript">
    3         //立即执行函数
    4         function test(){
    5             var abc = 123;
    6             console.log(abc);
    7         }();
    8     </script>
    9 </body>
    View Code

    在控制台上会报一个语法错误!这里需要注意:只有表达式才能执行;所以正确写法如下:

     1 <body>
     2     <script type="text/javascript">
     3         //立即执行函数
     4         function test(){
     5             var abc = 123;
     6             console.log(abc);
     7         }
     8         test();
     9     </script>
    10 </body>
    View Code

    注意:test(); 是表达式,就像123;是表达式123+345;也是表达式!

    当然我可以在刚才函数声明后面加一个立即执行的符号(),然后在前面加上 + 、-、!【非】

    1 <body>
    2     <script type="text/javascript">
    3         //立即执行函数
    4         + function test(){
    5             var abc = 123;
    6             console.log(abc);
    7         }();
    8     </script>
    9 </body>
    View Code

    也可以让函数立即执行,而且执行之后会立即将函数名释放掉,也就是函数名就找不到了,我们可以在控制台上再次输入函数名,结果就会报错!

    7.在js中一个变量如果不声明直接使用会报错,但是如果一个对象的属性不存在,我们访问它,则不会报错,而是会输出undefined!

  • 相关阅读:
    线性单链表动态内存分配(C语言实现)
    线性顺序表动态内存分配(C语言实现)
    Linux-v01天-课堂笔记
    博客园之自定义博客(美化+播放器)
    递归练习
    算法基础练习-_06 二进制小数
    算法基础练习-_05将整数的奇偶位互换
    算法基础练习-_03 1的个数
    算法基础练习-_01找出唯一成对的数
    常用算法之快速排序
  • 原文地址:https://www.cnblogs.com/python-machine/p/8082922.html
Copyright © 2011-2022 走看看