それを忘れて、今度は急いでください、それはまだコードワードです。前回撮った写真は本当に醜いです。
まず、ピンクさんに心から感謝し、無私の貢献に感謝し、フロントエンドホールに連れて行ってくれるかもしれません。
目次
1.引数の使用
渡されるパラメーターの数がわからない場合は、引数を使用して取得できます。JavaScriptでは、引数は実際には現在の関数の組み込みオブジェクトです。すべての関数には、渡されたすべての実際のパラメーターを格納する組み込みの引数オブジェクトがあります。
引数の表示形式は疑似配列であるため、トラバースできます。疑似配列には次の特徴があります。
- 長さ属性があります
- インデックスでデータを保存
- 配列なしのプッシュ、ポップ、その他のメソッド
例:任意の数の最大値を見つける
function getMax(){
var max = arguments[0];
for (var i = 1;i < arguments.length;i++){
if (max < arguments[i])
max = arguments[i];
}
return max;
}
console.log(getMax(1,2,5,9,40,29,30));
2.機能演習
練習1関数を使用して配列を反転します
function reverse(arr){
var newArr = [];
for (var i = arr.length - 1; i>=0; i--){
newArr[newArr.length] = arr[i];
}
return newArr;
}
var arr1 = reverse([1,3,5,7,9]);
console.log(arr1);
練習2関数バブルソートを使用する
function sort(arr){
for (var i = 0; i < arr.length-1; i++){
for (var j = 0; j< arr.length - i - 1;j++){
if (arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
var arr1 = sort([1,8,2,5,7]);
console.log(arr1)
練習3関数を使用してうるう年かどうかを判断する
function isRunYear(year){
return !((year%400)||(year%4==0&&year%100!=0))
}
console.log(isRunYear(2020))
3.関数を宣言する2つの方法
1.関数キーワードを使用して関数(名前付き関数)をカスタマイズします
function fn(){
}
fn();
2.関数式(無名関数)
var variable name = functino(){};
たとえば
var fun = function(){
console.log('我是函数表达式');
}
fun();
注:
(1)Funは変数名であり、関数名ではありません。
(2)関数式の宣言は、変数に値が含まれ、関数式に関数が含まれることを除いて、変数の宣言と似ています。
(3)関数式次のことができます。パラメータも渡します
4.スコープ
概念はCと同じで、プログラムの信頼性を向上させ、名前の競合を減らします。
グローバルスコープとローカルスコープに分けられます。
グローバルスコープ:スクリプトタグ全体または個別のjsファイル内。
ローカルスコープ:(関数スコープ)は関数内のローカルスコープです。この変数の名前は関数内でのみ有効
です。同様の関数を持つ変数も次のように分類されます。グローバル変数とローカル変数
注:
1。関数にはvar宣言はありませんが、直接割り当てられた値もグローバル変数
です。2。関数の正式なパラメーターもローカル変数と見なすことができます。3
。グローバル変数には寿命が長く、より多くのメモリを占有します。
4.この段階では、jsにはブロックレベルのスコープはありません(es6より前では、es6はバージョンを意味します)。
といった
if (3 < 5){
var num = 10;
}
console.log(num);
//是会输出10,不会报错的
スコープチェーン
関数に関数がある場合、このスコープで別のスコープを作成できます。内部関数が外部関数変数にアクセスできるというこのメカニズムによれば、チェーン検索は、スコープチェーンと呼ばれる内部関数がアクセスできるデータを決定するために使用されます。
といった
var num = 10;
function fn(){
var num = 20;
function fun(){
console.log(num);
}
}
fn();
//结果为20,离得近的屏蔽离得远的,就近原则
5.事前分析
私たちのjsエンジンは2つのステップでjsを実行します:事前分析とコード実行
(1)事前分析:jsエンジンはjs内のすべての変数と関数を現在のスコープの最前線に昇格させます
(2)コード実行:コード実行の順序は上から下です。
事前分析は、変数事前分析(変数昇格)と関数事前分析(関数昇格)に分けられます。
(1)変数昇格は、すべての変数宣言を上に昇格させることです。プロモーション割り当て操作なしの現在のスコープ。
(2)関数の昇格は、関数を呼び出さずに、すべての関数宣言を現在のスコープの前に昇格させることです。
// 1
console.log(num);
// 变量为声明,报错
// 2
console.log(num);
var num = 10;
// 结果为: undefined
// 相当于执行:
// var num;
// console.log(num);
// var num = 10;
// 3
fn();
function fn() {
console.log(11);
}
// 输出11
// 相当于执行:
// function fn() {
// console.log(11);
// }
// fn();
// 4
fun();
var fun = function(){
console.log(11);
}
// 报错
// 相当于执行:
// var fun;
// fun();
// var fun = function(){
// console.log(11);
// }
注意:
function f1(){
var a = b = c = 9;
// 相当于 var a = 9; b = 9; c = 9;
// b 和 c直接赋值 没有var 声明 当全局变量看
}
Six。オブジェクト(オブジェクト)
JavaScriptでは、オブジェクトは関連するプロパティとメソッドの順序付けられていないコレクションのセットです。すべてのものは、文字列、数値、値、関数などのオブジェクトです。
たとえば、
(1)星はオブジェクトではなく、Di Liebaはオブジェクトです
(2)ガールフレンドはオブジェクトではなく、xxxはオブジェクトです
。つまり、オブジェクトは具体的なものであり、抽象的すぎることはできません。実際、私が学んだpythonによると、抽象的すぎるとクラスであると言えます。
オブジェクトは、プロパティとメソッドで構成されています。
- 属性:オブジェクト(固有名詞)の属性によって表されるものの特性
- メソッド:オブジェクト内のメソッド(一般的な動詞)で表される、物事の動作
オブジェクトを作成する3つの方法:
- リテラルを使用してオブジェクトを作成する
- 新しいオブジェクトを使用してオブジェクトを作成します
- コンストラクターを使用してオブジェクトを作成します
1.オブジェクトリテラルを使用して次の
ようなものを作成します
var obj = {
uname: '张三疯',
age: 18,
sex: '男',
sayHi: function() {
console.log('hi~');
}
}
// (1)里面的属性或者方法我们采用键值对的形式,键是属性名,值是属性值
// (2)多个属性或者方法之间用,隔开
// (3)方法冒号后面跟的是一个匿名函数
// 调用属性的两种方法:
// (1)对象名.属性名 . 我们理解为的
console.log(obj.uname);
// (2)对象名['属性名']
console.log(obj['age']);
// 调用对象的方法 sayHi 对象名。方法名() 千万不要忘记添加小括号
obj.sayHi();
2.新しいオブジェクトを使用して作成します。
var obj = new Object();
obj.uname = '张三疯';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function() {
console.log('hi~');
}
// (1)我们是利用等号 = 赋值的方法 添加对象的属性和方法
// (2)每个属性和方法之间用分号结束
// (3)调用同第一种方法创建的对象类似
console.log(obj.uname);
console.log(obj['sex']);
obj.sayHi();
3.コンストラクターを使用してオブジェクトを作成します
// 我们为什么需要使用构造函数
// 就是因为我们前两种创建对象的方法一次只能创建一个对象
// 我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为 构造函数
// 构造函数 就是把我们对象里面的一些相同的属性和方法抽象出来封装到函数里面
// 语法格式:
// function 构造函数名() {
// this.属性名 = 属性值;
// this.方法名 = function() {}
// }
// new 构造函数名();
// 例如:
function Star(uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
}
var ldh = new Star('刘德华', 18 ,'男');
console.log(ldh.name);
// 注意:
// 1.构造函数名首字母要大写
// 2.构造函数不需要 return 就可以返回结果