javascript学习指南——先导片

javascript学习:


- 带有src属性的<script>元素不应该在其<script>和</script>标签之间再包含额外的JavaScript代码,如果包含了嵌入的代码,只会下载并执行外部脚本文件,嵌入的代码会被忽略
- 标准模式和混杂模式的区分点:主要为css方面,也会影响JavaScript
标准模式和混杂模式区别
- <noscript>元素可以指定在不支持脚本的浏览器中显示的替代内容,但启用的情况下不会显示

  • JavaScript区分大小写,基本数据类型有undefined,Null,Boolean,Number,String JavaScript的精度运算会出现误差,主要是因为采用了IEEE 754标准,转化为二进制后运算有位数限制,利用先转化为整数解决
  • 省略var后变量变为全局变量(不赞成这样做),用var在函数内部定义一个变量,则只在函数内部环境有效,undefined派生自null
  • isNaN()函数判断是否是数值
  • typeof 判断数据类型,“person instanceof object”判断变量是否是object的实例
  • 利用parseInt()函数制定基数,如: var num=parseInt(“10”,16),parseInt()将字符串转化成整数;
  • Number()将null转化为0,将undefined转化为NaN
  • parseFloat()只解析十进制数,如果第一个数为非数字,会被直接解析为NaN
  • 字符串中含有双字节字符,length属性不会精确地返回字符串的字符数目;
  • 转换成字符串方法:num.toString(8)可将num转换成8进制的数

创建Object对象保存在变量o中,实现实例化:
var o=new Object(); Object的每个实例有以下属性和方法: constructor:保存用于创建当前对象的函数,此例中的构造函数为Object();
hasOwnProperty():检查对象实例是否有某属性,属性名以字符串形式指定;
valueOf():返回对象的字符串、数值或布尔值,即具体值,如var t=new
Date(),o.valueOf()会返回具体的时间(d的值)

一元操作符+和-对对数字不会产生影响,但对其他非数值进行操作时,会像Number()函数一样对值进行转换
var num1 = 25; // 二进制 00000000000000000000000000011001
var num2 = ~num1; // 二进制 11111111111111111111111111100110
alert(num2); // -26
变成负数的读法是按位取反,末位加一(得到补码)

左移不区分有符号和无符号,右移过程: 有符号右移(>>): 符号位不变,最高位以1填充; 无符号右移(>>>):
会把负数的二进制码当成正数的二进制码,导致得到的结果很大

字母和字母比较时,全部转换成字符编码比较;字符和数字比较时,字符转化成数值

函数的参数在调用时不用一一对应,参数其实由一个argument的对象组成的数组,调用的时候,第一个参数可以写为argument[0],依此类推

  • 按位非的实质是操作数的负值-1
  • valueOf() 方法可返回 Boolean 对象的原始值,NaN不等于任何值
  • ECMAScript函数没有重载,但可以实现类似重载效果,可以向函数传递任意数量的参数,函数都会执行,可通过argument对象来访问参数,相当于其中有一个argument数组

判断类型时使用typeof操作符,如果是对象使用instance判断是什么类型的对象

  • 创建object实例有两种方法
    1.对象字面量表示法:
    var person={
    name:”nike”, //使用逗号分隔不同的属性
    age:12 //最后一个变量,不用加逗号
    }
    2.最直接的new 操作符+Object构造函数
    var person=new Object();
    person.name=”Nicholas”;
    person.age=29;

使用 new 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。
例如:
var value = “25”;
var number = Number(value); //转型函数
alert(typeof number); //”number”
var obj = new Number(value); //构造函数
alert(typeof obj); //”object”


  • join方法可使用不同的分隔符重建字符串
  • js中的toString()和toLocaleString()不同地方在于后者会按本地规则进行解析,如new Date()会解析成类似2018/3/26 下午8:35:06,解析数字时会每三个隔一个逗号,像是人民币的断字
  • 查找数组中的某个数,从前开始往后:indexOf(),从后开始往前:lastIndexOf()
  • 取模运算只与左边的符号有关
  • 函数声明会覆盖变量声明(在仅声明不赋值的情况下)
  • 自调用函数过程:
    (function () {
    var x = “Hello!!”; // 我将调用自己
    })();
  • element.addEventListener(event, function, useCapture);

第一个参数是事件的类型 (如 “click” 或 “mousedown”).

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
利用js添加一个块级元素:

<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另一个段落。</p>
</div>
<script>
var para=document.createElement("p");
var node=document.createTextNode("这是一个新段落。");
para.appendChild(node);
var element=document.getElementById("div1");
element.appendChild(para);

js弹窗之确认框:

function myFunction(){
    var x;
    var r=confirm("是否选择!");
    if (r==true){
        x="你按下了\"确定\"按钮!";
    }
    else{
        x="你按下了\"取消\"按钮!";
    }
    document.getElementById("demo").innerHTML=x;
}

js弹窗之提示框:

function myFunction(){
    var x;
    var person=prompt("请输入你的名字","Harry Potter");
    if (person!=null && person!=""){
        x="你好 " + person + "! 今天感觉如何?";
        document.getElementById("demo").innerHTML=x;
    }
}

bind()方法普遍使用:

function f(y,z){
    return this.x+y+z;
}
var m=f.bind({x:1},2); 
console.log(m(3));  // 6

bind()方法会把传入它的第一个实参绑定给f函数体内的 this,从第二个实参起,将依此传递给原始函数,因此 {x:1}传递给this ,2传递给形参y,m(3) 调用时的3 传递给形参z。

其实这个例子 f() 函数能够处理部分参数,分步计算 ( bind() 时处理了参数x,和参数y,调用 m(3)时处理了参数z )的过程其实是一个典型的Curry过程(Currying)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章