Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2-JavaScript基本概念 #6

Open
Ogurimuio opened this issue Feb 23, 2019 · 0 comments
Open

2-JavaScript基本概念 #6

Ogurimuio opened this issue Feb 23, 2019 · 0 comments
Assignees
Labels
JavaScript something about JavaScript 读书笔记 整理书籍知识点

Comments

@Ogurimuio
Copy link
Owner

JavaScript基本概念

基本语法

  • 区分大小写

  • 标识符

    • 第一个字符必须为:字母、下划线、美元符号
    • 一般用驼峰法,如:myCar
  • 注释

    • //单行注释

    • /*

      *多行

      *注释

      */

  • 切换到严格模式

    "use strict";

变量

  • var定义变量

    var message="Hi";
    message=100;  //有效但不推荐

    var定义的变量仅在作用域中有效。

    如:在函数中定义的变量,退出函数后,该变量将被摧毁

  • 定义全局变量——省略var

    function test()
    {
    	message="hi";	//message为全局变量
    }
    test();	//调用函数,创建变量
    alert(message);	//有效

数据类型

具有动态性

  • 简单数据类型:Undefined、Null、Boolean、Number、String

  • 复杂数据类型:Object

    ​ Object本质上由一组无序的名值对组成

typeof操作符

返回值为变量的数据类型

  • undefined:未定义
  • boolean: 布尔值
  • string: 字符串
  • number: 数值
  • object: 对象或null
  • function: 函数
var message="something";
alert(typeof message);	// "string"
alert(typeof(message));	// "string"
alert(typeof 95);		//"number"
Undefined

var声明变量后,未对其做初始化时,该变量为Undefined。

var message;	//默认取得undefined值

//不声明变量age

alert(message);		//undefined
alert(age);			//错误

alert(typeof message);	//undefined
alert(typeof age);		//undefined

用typeof,不论是否声明变量,都会返回undefined值。

Null
  • 表示一个空对象指针,用typeof检测null值时,会返回为“object”。

  • 当一个变量要用于保存对象时,应将其初始化为null。可以用car!=null检查它是否已经保存了一个对象了。

  • null==undefined,会返回true。

Boolean
  • 两个值:true、false。不一定等于1和0;且为小写。
  • True和False不是Boolean的值,只是标识符。

  • 其他数据类型可转化成boolean值。

    var message="hello";
    var message_Boolean=Boolean(message);
    数据类型 转成true的 转成false的
    Boolean true false
    String 任何非空字符串 空字符串
    Number 任何非零数字值 0和NaN
    Object 任何对象 空对象
    Undefined n/a,即不适用 undefined
Number
  • 可以表示十进制

    var intNum=55;	//十进制
  • 可以表示八进制——第一位为0

    var octalNum1=070;	//八进制,解析为十进制的56
    var octalNum2=079;	//无效的八进制,解析为79
    var octalNum3=08	//无效的八进制,解析为8
  • 可以表示十六进制——前面为0x

    var hexNum1=0xA;	//十六进制,解析为十进制的10
  • 可以表示浮点数、极大极小数

    var floatNum1=1.1;
    var floatNum2=3.15e7;	//相当于31500000

    浮点数在计算时会出现误差,如0.1+0.2=0.300000000004。

    因此不能用其做判断。(但如果如0.05+0.25=0.3则可以)

  • 若数值小雨5e-324,大于1.79e308则会转化成-Infinity(负无穷)或Indinity(正无穷)。且不能参加计算。 使用**isFinite()**函数,若位于最大最小之间,则返回true。

  • NaN:表示非数值。 用**isNaN()**函数判断是否可转化为数值。

  • 数值转换:可以把非数值转化为数值:Number()、parseInt()、parseFloat().

    第一个适用于任何类型,后两个专用于字符串->数值。

    如果是转化的是对象,则调用对象的valueOf()方法,如果返回NaN,则调用toString()方法。

    var num1=Number("hello1234");	//NaN
    var num2=Number("070");			//70
    var num3=Number("true");		//1
    
    var num4=parseInt("123blue");	//123
    var num5=parseInt("070");		//可能是70,可能是八进制56
    var num6=parseInt("070",8);		//56
    
    var num7=parseFloat("0908.5");	//908.5
    var num8=parseFloat("22.34.5");	//22.34

    parseFloat()只能解析成十进制。他会始终忽略第一个0,且只有第一个小数点有效。

String
  • 可以用单引号,也可以用双引号。

  • 字符串长度可由length得到。如:text.length

  • 把一个值转换成字符串:toString

    var age=11
    var ageToString=age.toString();	//11变为字符串
    
    //可以以任何进制返回
    var age.toString(2);	//返回11的二进制
    var age.toString(16);	//16进制
  • 若为null或者undefined,则需要使用String来转为字符串

    var value1=null;
    var value2;
    var value3=true;
    
    alert(String(value1));	//null
    alert(String(value2));	//undefined
    alert(String(value3));	//true
Object
  • 创建

  • var o=new Object()
  • object拥有以下属性和方法

    • hasOwnProperty(name) 是否存在name这个属性

    • isPrototypeOf(object1) object1是否为该对象的原型

    • propertyIsEnumerable(name) name是否可以使用for-in语句来枚举

    • toLocaleString() 返回对象的字符串表示。

数据操作

  1. 32位二进制存放数值,1位是数值符号(正负),剩下的31位是数值
  2. 正数——二进制,负数——二进制补码(数值的31位先反码,再加一)
按位非(NOT)

操作符为 ~

var num1=25
var num2= ~num1	//num2=-26

~ :操作数的负值,再减一(即32位数的反码)

var num1=25
var num2= ~num1-1	//num2=-26

因为按位非操作在最底层,执行速度更快

按位与(AND)

操作符为&

1与1为1,其他都为0

例如:25&3=1

按位或(OR)

操作符为|

0或0为0,其他都为1

例如:25|3=27

按位异或(XOR)

操作符为^

0异或1为1,1异或1为0,0异或0为0

例如:25&3=26

移位
  • 左移,以0填充

    var old=2;
    var new=old << 5;	//左移5位
  • 右移

    • 有符号右移,以符号位填充
    var old=2;
    var new=old >> 5;	//右移5位
    • 无符号右移,以0填充
    var old=2;
    var new=old >>> 5;	//右移5位
逻辑非!
alert(!12345)	//false
alert(!"blue")	//false
逻辑或||

#####逻辑与&&

>< 字符串比较

字符串比较时,比较的是两个字符串中对应位置的字符的编码值大小

var result="Brick"<"alphabet"  //true
                         	//因为大写的B为66,小写的a为97
//都转换成小写比较
var result="Brick".toLowerCase()<"alphabet".toLowerCase;
//false
相等和不等 ==和!=
全等和不全等 ===和!==

===:只在两个操作数未经数据转换就相等的情况下返回true

"55"==55	//true
"55"===55	//false

"55"!=55	//false
"55"!==55	//true
逗号赋值
var num=(5,1,4,8,0)	//num=0,返回最后一项

####语句

for-in语句

相较与for的更精准语句,用来枚举对象的属性

for(var propName in window){
	document.write(propName);
}
//每次循环将window的一个属性名赋值给propName
label语句

使用label可以在代码中添加标签

start:for(var i=0;i<count;i++)
    {
         alert(i)                      
     }
 //这里的start为标签名,可以被break和continue引用。
outermost:
for(……)
{
	……
	if()
		break outermost;
		//continue outermost
}
with语句

将代码的作用域设置到一个特定对象中

//把
var hostName=location.hostname;
var url=location.href;

//简化为
with(location)
{
	var hostName=hostname;
	var url=href;
}
函数
function name(arg)
{
	……
}

function doAdd()
{
	if(arguments.length==1)
		{	alert(arguments[0]+10)	}
	if(arguments.length==2)
		{	alert(arguments[0]+arguments[1])	}
}

函数没有重载,同时定义是,属于最后定义的函数

@Ogurimuio Ogurimuio added the JavaScript something about JavaScript label Feb 23, 2019
@Ogurimuio Ogurimuio self-assigned this Feb 23, 2019
@Ogurimuio Ogurimuio added the 读书笔记 整理书籍知识点 label Feb 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JavaScript something about JavaScript 读书笔记 整理书籍知识点
Projects
None yet
Development

No branches or pull requests

1 participant