JS 기본 Daquan의

JS 기본

기본 구문
일치가 있다면 * 스위치 사이클 (단, 식 (X) (전형적으로, 변수) 값은 다음과 비교 식의 구조로 각각의 케이스., 그 경우는 연관된 블록으로 실행될 것이다. ) 코드가 실행되는 경우를 방지하기 위해 자동으로 분해 사용하십시오하면 타입 변환되지 않습니다

var x;
switch(x){
case true:console.log("x类型转换")   ;
default:console.log("x没有发生类型转换");
 }//case没有发生类型转换    switch语句执行严格相等

삼원 * 연산자

var a=1;
console.log(a?"a has a value":"a not has a value");//a has a value
 //利用三元运算符,输出相应提示
n=2;
 var msg="数字"+n+"是"+(n%2===0?"偶数":"奇数");//偶数
  console.log(msg);*/
   //利用三元运算符,在字符串之间插入不同的值

* 브레이크 계속 문이 자동으로 닫히거나 코드 블록 밖으로있다

var num = 0;
       for (var i = 0 ; i < 10 ; i++){
           console.log("i="+i);
           for (var j = 0 ; j < 10 ; j++){
               console.log("j="+j);
               if( i == 5 && j == 5 ){
                   console.log("i,j=5");
                   break;
               }
               num++;//95
           }
       }
       console.log(num);//当i,j=5时,break会结束j的循环,但是不会影响i的循环
var num=0;
       for(var i=0;i<10;i++){
           console.log("i="+i);
           for(var j=0;j<10;j++){
               console.log("j="+j);
               if(i==5&&j==5){
                   console.log("i,j=5");
                   continue;
               }
               num++;//99
           }
       }
       console.log(num);//当i,j=5的时候,continue会自动跳出这个循环,继续下一个

* 라벨 태그

var num = 0;
       outPoint://这里为label,标签名为outPoint
           for (var i = 0 ; i < 10 ; i++){
               console.log("i="+i)
               for (var j = 0 ; j < 10 ; j++){
                   console.log("j="+j)
                   if( i == 5 && j == 5 ){
                       console.log("i,j=5")
                       console.log(num)
                       break outPoint;
                   }
                   num++;//55
               }
           }
       console.log(num);//有label标签之后,break会结束任何的代码块循环,所以当i,j=5的时候,break结束了i,j的循环,只循环了55次
var num = 0;
       outPoint:
           for (var i = 0 ; i < 10 ; i++){
               console.log("i="+i)
               for (var j = 0 ; j < 10 ; j++){
                   console.log("j="+j)
                   if( i == 5 && j == 5 ){
                       console.log("i,j=5")
                       console.log(num)
                       continue outPoint;
                   }
                   num++;//95
               }
           }//同理continue会跳出i.j的循环

데이터 유형
캐릭터 (캐릭터), 오브젝트 (Object)를 정의되지 않은, 널 값 (횟수)은 부울 값, JavaScript는 6 개 개의 데이터 유형을 갖는다
ES6 새로운 심볼 ()을 입력 할 때
의 값 타입 JS의 세 가지 방법이 결정된다 :
(1) : 대해서 typeof 사업자
번호, 오브젝트 문자열 기능 : 어레이는 널 등 개체 복귀의 typeof 만 영역 타입 값 만은 typeof 값 육가지주고, 참조 형식을 구별 할 수없는 , 정의, 부울.
2 유형의 방법은 instanceof를 판단 기준에 대한 생성자

var p =new Person();
console.log(p instanceof Person);//true``

. 3 : Object.prototype.toString ()
널 및 정의
변환 된 값이 0이되면, "빈"방법을 나타내는 널이 정의 여기 나타내는 정의, 변환 된 값 경우 NaN이 반환
부울
다음 연산자 , 사전 조작이와 단항 &&, ||, 또는 : 그것은 부울 값을 반환합니다! 비, 비교 연산자 (<, <=,>,> =), 항등 연산자 (== ==,!,! =, ==)은
오직 여섯 값은 널 (미정 false로 변환되고 NaN이 0, 거짓, 널 문자)
의 값
의 정수 및 부동 소수점
모든 수치는 64 비트 부동 소수점 수를 기준으로 1.0 1 같은지, 자바 스크립트에 저장되고, 기본 언어 정수없는
값의 범위가
수치 범위로 표현 될 수있다 전원 2~2 1024 -1023 번째 전력
인 디지털 무한대 (무한)와, 양의 오버 플로우를 발생하는
디지털 -Infinity (마이너스 무한대)와 음의 오버플
MAX_VALUE에 주제 및 번호를 제공하는 동시에 MIN_VALUE의 최대 및 최소

진 : 0B 또는 앞에 0B는 0,1로 구성된
진수 : 앞에에서 0o, 0o에서, 또는 0을 선도하고, 구성 0-7 번호가
진수 : 0 없음 접두사
진수 시스템 : 접두사 대해 0x 또는 0X
NaN3를
NaN이 0으로 나눈 값 0을 얻을 것이다 디지털 파싱 에러 때있을 것이다 번호 유형에 속하는 NaN이 NaN의, 같이 IndexOf 배열을 사용하여 얻을 숫자 사이 자체 단지 동일 어떤 수와 동일하고, NaN이 조작 아니다 오퍼레이터는 엄격히 동일하므로이 방법은 NaN이 사용될 수 없다
* 연관된 변환 방법
으로 parseInt을 :
정수로 문자열 방법. 반환 값은 두 가지 가능성, 소수점 이하 자릿수 정수 중 하나 NaN가됩니다.

1) 캐릭터 헤드 스페이스 경우 스페이스가 자동으로 제거 될 것이다.
으로 parseInt 인수가 문자열이 아닌 경우 2), 그것은 먼저 문자열로 변환합니다.
3) 그들은 숫자로 변환되지 않습니다 경우 문자 변환 뒤에 정수로 문자열을 더 이상 진행하지 수익률은 좋은 부품에 전송되었습니다.
에서는 parseFloat은 () :
매개 변수가 문자열 또는 부동 반환 NaN이로 변환 할 수없는 첫 번째 문자의 문자열이 아닌 경우, float로 문자열을 변환, 빈 문자열이 NaN로 변환됩니다 주목해야한다
때는 isNaN :
NaN의 판단은 사실 문자열, 배열,의 NaN이 반환, 사용하지 않는
대체 방법 : 자체가 NaN 자체로 변화와 함께, 함수를 작성 할 수 있습니다

function   msgNaN(value){
            return value !==value
}

isFinite에가 () :
숫자가 양의 무한대, 음의 무한대뿐만 아니라, 정상적인 수없는 경우를 결정하는 데 사용, NaN가 false를 반환, 나머지는 true를 돌려줍니다.
문자열
긴 문자열이있는 경우 문자열이, 불평, 여러 줄을 쓸 수 없습니다, 마지막에 행을 완료 할 수 없다 백 슬래시
백 슬래시의 특별 사용은 다음 JS 기본 Daquan의
문자열은 문자의 배열에 해당 대괄호의 숫자를 사용할 수 있습니다 숫자 문자열 여부를 대괄호 안에 숫자의 길이보다 큰 경우 운영자가 정의되지 않은 반환, 위치 번호를 반환
길이 속성 : 문자열의 길이는 방법을 읽을 수 있습니다,이 방법은 다시 할 수없는
문자 집합 : 자바 스크립트는 유니 코드 문자 집합을 사용합니다. 내부 자바 스크립트 엔진, 모든 문자는 유니 코드로 표시됩니다. 자바 스크립트뿐만 아니라 유니 코드 문자를 저장하는 것입니다, 또한 캐릭터가 xxxx는 문자의 유니 코드 코드 포인트를 나타냅니다 Uxxxx에 \를의 형태로 기록하는 것입니다, 직접 프로그램에서 유니 코드 코드 포인트의 사용이 문자를 나타냅니다 수 있습니다. 예를 들어, \ 저작권 기호 대신 u00A9.
그들은 항상 두 개의 문자입니다 10FFFF 사이의 문자, 자바 스크립트에 대한 코드 포인트 U + U + 10000 (길이 속성이다 2). 치료는이 점을 고려해야한다 때, 그 자바 스크립트 문자열의 길이가 올바르지 않을 수 있습니다 반환 말을하는 것입니다.
Base64로 트랜스 코딩 : 모든 값에 특수 문자의 문제를 피하기 위해 0-9, AZ, AZ, +, /, 64 개 문자의
값이 임의의베이스 64로 전환시켰다 btoa ()
원래 값으로 atoB 유전자 ()를 Base64
그러나 이러한 두 가지 방법이 적용 ASCII 값, Base64로 ASCII는 추가 중간 트랜스 코딩 과정으로 변환되지 않습니다
JS 기본 Daquan의
주제를
키 이름은 고유 이름의 조건을 충족하지 못하는 경우, 그리고 숫자 (예를 들어, 첫 번째 공백, 숫자, 또는 연산자)는, 인용 부호 및 추가하려면이 시간 오류가 발생하지
JS 기본 Daquan의
개체에 대한 참조를 :
다른 변수 이름을 가리키면 같은 객체, 즉, 동일한 주소를 가리 하나의 값을 수정합니다, 다른 값이 수정됩니다
JS 기본 Daquan의
만, 변수 객체의 원래 이름에 대한 참조를 삭제할 경우, 다른 객체는 수정하지 않는
JS 기본 Daquan의
표현이나 문을 :
시작하는 경우 중괄호는, 그것의 목적은 괄호와 필요한 경우 경우 코드 블록이며,
JS 기본 Daquan의
속성
브래킷 연산자, 쟁점에 대한 인용해야하는 경우, 그렇지 않은 경우는 변수로 취급됩니다 속성은 읽기
JS 기본 Daquan의
키 이름의 값을 사용하지 않습니다 도트 연산자, 그렇지 않으면 그것은 단지 대괄호 연산자를 사용하여 오류가 발생하지
JS 기본 Daquan의
, Object.keys의 방법은 객체의 속성을 보려면
JS 기본 Daquan의
속성을 삭제 :
개체 속성을 삭제하려면 삭제를 삭제 한 후 true를 반환하고, 시간의 응용 프로그램을 삭제하지 마십시오 속성이 또한 진정한 수익을 따라하지 않는, true를 돌려줍니다 존재, 개체의 속성은,이 것으로 판단 장군이 존재하고 false를 반환 할 때 삭제 될 수 없으며 단지 자신의 재산을 삭제할 수 있습니다 동시에, 당신은 상속 재산 제거 할 수 없습니다
JS 기본 Daquan의
연산자를
가있는 경우 객체가 true를 돌려줍니다하는 속성이 있는지 여부를 결정하기 위해,하지만이 방법은 될 수 없다 판단 자체 또는 속성이 상속
JS 기본 Daquan의
객체의 모든 속성을 통해 루프에 대한, 그 객체, 상속을 통과합니다, 개체가 통과 할 수없는, 오직 자신의 재산을 통과하지 않습니다 개체를 통과하지 않는 통과 할 수 횡단 시간에 이용 hasOwnProperty 방법은 결합되어야 ... 대한 속성이 속성은 오브젝트 자체의 속성 인 경우에, 어떤 결정하기 위해 내부 루프에 사용한다. JS 기본 Daquan의

JS 기본 Daquan의
변수 할당과 내부 블록이 이미 존재하는 현재의 객체 속성이어야있을 경우 그렇지 않으면 글로벌 변수의 현재 범위를 만들 것입니다.
JS 기본 Daquan의
배열
데이터의 어떤 유형이 상기 어레이에 배치 할 수있는
길이 속성
배열의 길이 속성 것은 쓸 증가 또는 어레이, 0으로 설정 배열 길이의 길이를 감소시킬 수있다 길이 변화 빈 어레이에 사용될 수 있으며, 배열 길이가 일본어로 설정 한 경우보다 크다 어레이의 길이가 그 위치가 새로운 위치가 대상물의 성질 배열이며, 정의 반환, 공백이 추가되며, 인위적 어레이의 길이를 변경하지 않고 특성 배열을 추가 할 수있다JS 기본 Daquan의
연산자
키 이름을 테스트 어레이에 존재하는지 여부, 즉 또한 배열에 대한 상기 물체에 적용되는
루프 배열 탐색에있어 *
단지 숫자 키 배열을 통과하지 않을뿐만 아니라, 비 숫자 키 배열을
배열뿐만 아니라 루프 while 루프를 사용할 것을 권장 또는 방법의 foreach

<body>
<p>点击按钮计算数组所有元素相加的总和。</p>
<button onclick="numbers.forEach(myFunction)">点我</button>
<p>数组元素总和:<span id="demo"></span></p>
<script>
var sum = 0;
var numbers = [65, 44, 12, 4];
function myFunction(item) {
    sum += item;
    demo.innerHTML = sum;
}
</script>//数组元素总和:125

数组的空位
数组的空位是可以读取的,并且返回undefined,同时数组的空位在forEach,for in,以及Object.keys的方法遍历的过程中会跳过,但是如果某个位置是undefined在遍历的过程中就不会被跳过。
类数组的方法
slice可以将类似数组的方法变成真正的数组
var arr = Array.prototype.slice.call(arrayLike);
通过call可以把数组的方法加在对象上面
JS 기본 Daquan의
函数
函数可以调用自身,就是递归
变量提升:
如果采用function和赋值语句同时调用同一个语句,最终会采用赋值语句的方法
JS 기본 Daquan의
不能在条件语句中声明代码块,但能运行
JS 기본 Daquan의
函数的属性和方法
name属性:返回函数的名字,也可以返回函数参数的名字
JS 기본 Daquan의

length
函数的length属性返回函数预期传入的参数个数,length属性提供了一种机制,判断定义时和调用时参数的差异,以便实现面向对象编程的”方法重载
tostring
返回一个字符串,内容是函数的源码
JS 기본 Daquan의
*函数的参数
函数的length属性是只读属性,代表函数形参的数量,也就是在函数定义时给出的形参个数。需要注意的是,函数的length属性与实际传入的参数个数无关,只反映函数预期传入的参数个数。
没有办法只省略靠前的参数,而保留靠后的参数。如果一定要省略靠前的参数,只有显式传入undefined。

function f(x,y){}
f.length  //2

函数的传递
原始类型的值(数值、字符串、布尔值),传递方式是传值传递(在函数体内修改参数值,不会影响到函数外部。)
参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(内部修改参数,将会影响到原始值。)
注意!如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值。
JS 기본 Daquan의
*arguments 对象
实参对象,只在函数内部使用
通过arguments的length属性可以知道函数在调用的时候到底带几个参数
与数组的关系:虽然arguments很像数组,但它是一个对象。数组专有的方法(比如slice和forEach),不能在arguments对象上直接使用。如果要让arguments对象使用数组方法,真正的解决方法是将arguments转为真正的数组。两种常用的转换方法:slice方法和逐一填入新数组。
callee 属性:arguments对象带有一个callee属性,返回它所对应的原函数。JS 기본 Daquan의
闭包:
1.读取函数内部的变量,并让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。
JS 기본 Daquan의
2.封装对象的私有属性和私有方法。
JS 기본 Daquan의
注意,外层函数每次运行,都会生成一个新的闭包,而这个闭包又会保留外层函数的内部变量,所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题。
eval 把字符串当成语句来执行放在eval中的字符串有独立存在的意义,不能放在eval之外使用,他没有自己的作用域,都在当前的作用域因此可能会修改当前作用域的值

eval('var a=1');
a  //1

与eval相类似的JS 기본 Daquan의

JavaScript规定,如果使用严格模式,eval内部声明的变量,不会影响到外部作用域。

(function(){
  'use strict';
  eval('var a=1');
  console.log(a);  //ReferenceError: a is not defined
})();

运算符
JS 기본 Daquan의
数值运算符:可以将任何值都转化为数值和number的属性相同
JS 기본 Daquan의
字符串的比较:
在比较字符串的时候,首先比较字符串第一个字符的Unicode码点,如果相等,就比较第二个,以此类推
非字符串的值
原始类型的值:先转化成数值再比较
对象:如果运算子是对象,会转化为原始类型的值,在进行比较
对象转化为原始类型的值,算法是先调用valueof的方法,如果返回的还是对象,再调用tostring方法
(3)undefined == null // true; undefined === null //false
逗号运算符
逗号运算符用于对两个表达式求值,并返回后一个表达式的值。
数据类型转换
强制转换
number()将任意值转化为数值
参数为原始类型的值,只要有一个字符无法转换,就会返回NaN,当参数为对象时,会返回NaN,除非是包含单个数字的数组
JS 기본 Daquan의
string()
原始类型的值转换:数值转化为相应的字符串
字符串转化为原来的值,布尔值:true转为字符串"true",false转为字符串"false"。undefined:转为字符串"undefined"。null:转为字符串"null"。String方法的参数如果是对象,返回一个类型字符串;如果是数组,返回该数组的字符串形式。
boolean():undefined,null,NaN,"",0这五个值会转化为false
所有对象(包括空对象)的转换结果都是true,甚至连false对应的布尔对象new Boolean(false)也是true
JS 기본 Daquan의
自动转换:!! expression
对象类型转换:
valueof:valueOf()方法。如果存在任意原始值,它就默认将对象转换为表示它的原始值;对象是复合值,而大多数对象无法真正表示为一个原始值,因此默认的valueOf()方法简单地返回对象本身,而不是返回一个原始值
undefined和null没有valueOf()方法

undefined.valueOf();//错误
null.valueOf();//错误

布尔型数据true和false返回原值。布尔型数据的包装对象返回true或false

true.valueOf();//true
typeof true.valueOf();//'boolean'
false.valueOf();//false
typeof false.valueOf();//'boolean'
Boolean.valueOf();//Boolean() { [native code] }
typeof Boolean.valueOf();//'function'

字符串类型原值返回。字符串类型的包装对象返回字符串值
数值类型分为整数和浮点数进行处理。数值类型的包装对象返回数值类型值
整数直接跟.valueOf()形式,会报错,提示无效标记,因为整数后的点被识别为小数点,所以尽量加括号

0.valueOf();//Uncaught SyntaxError: Invalid or unexpected token
(0).valueOf();//0
+0.valueOf();//Uncaught SyntaxError: Invalid or unexpected token
(+0).valueOf();//0
-0.valueOf();//Uncaught SyntaxError: Invalid or unexpected token
(-0).valueOf();//-0

浮点数原值返回

1.23.valueOf();//1.23
+1.23.valueOf();//1.23
-1.23.valueOf();//-1.23
NaN.valueOf();//NaN
Infinity.valueOf();//Infinity
-Infinity.valueOf();//-Infinity

对象Object类型及自定义对象类型返回原对象

{}.valueOf();//报错,Unexpected token .
({}).valueOf();//Object{}
typeof ({}).valueOf();//'object'
({a:123}).valueOf();//Object{a:123}
Object.valueOf();//Object() { [native code] }
typeof Object.valueOf();//'function'

函数Function类型返回原函数


function test(){
    alert(1);//1
}
test.valueOf();/*function test(){
                    alert(1);//1
                  }*/
Function.valueOf();//Function() { [native code] }

tostring
undefined和null没有toString()方法
布尔型数据true和false返回对应的'true'和'false'
字符串类型原值返回
1、正浮点数及NaN、Infinity加引号返回

1.23.toString();//'1.23'
NaN.toString();//'NaN'
Infinity.toString();//'Infinity'

  2、负浮点数或加'+'号的正浮点数直接跟上.toString(),相当于先运行toString()方法,再添加正负号,转换为数字

+1.23.toString();//1.23
typeof +1.23.toString();//'number'
-1.23.toString();//-1.23
typeof -1.23.toString();//'number'

  3、整数直接跟上.toString()形式,会报错,提示无效标记,因为整数后的点会被识别为小数点

0.toString (); // catch되지 않은 구문 에러 : 잘못된 또는 예기치 않은 토큰

  따라서, 상기 상황 () 메소드를 디지털 toString을 사용할 때, 상기 브래킷을 무효 해결하는 오류를 방지하기 위해서

(0).toString();//'0'
(-0).toString();//'0'
(+1.2).toString();//'1.2'
(-1.2).toString();//'-1.2'
(NaN).toString();//'NaN'

이 변수가 지정되지 않은 경우, 디지털 입력 toString () 메소드 기수 변환을 수신 할 수있다 (기수) 사양 파라미터, 변환 규칙은 소수에 기초한다. 마찬가지로, 다른 16 진수로 변환 될 수있다 (범위 2-36)

var n = 17;
n.toString();//'17'
n.toString(2);//'10001'
n.toString(8);//'21'
n.toString(10);//'17'
n.toString(12);//'15'
n.toString(16);//'11'

추천

출처blog.51cto.com/14419253/2435960