что происходит, когда мы const [something, somethin1} = styles [duplicate]

В месяце должно быть достаточно времени, чтобы представить себя PHP. PHP обычно включает в себя другие технологии, такие как HTML, SQL, XML и т. Д., И вы можете узнать, что их изучать (если вы еще не знаете их) занимает немного больше времени.

Для простого интерактивного веб-сайта вы вам нужно узнать следующее:

  1. Основы PHP , такие как синтаксис и т. д.
  2. HTML / CSS для форм и макета страницы .
  3. (необязательно) Доступ к базе данных с использованием MySQL или некоторый другой движок db .
  4. PHP security (для дезинфекции ввода пользователя)

Благоприятное сбережение PHP заключается в том, что справочные материалы на php.net превосходны, и руководство в целом неплохое. Однако есть много особенностей, и я не думаю, что есть что-то, кроме опыта, чтобы помочь вам в этом.

Если вы хотите начать с правой ноги, прочитайте на PHP объектной модели и просмотрите стандартную библиотеку . PHP имеет множество встроенных функций, а также имеет множество функций быстрого доступа, которые могут сэкономить ваше время, например file_get_contents () и fgetcsv () .

Инструменты и книги

Некоторые инструменты, которые я считаю полезными:

Если вы хотите получить книгу на PHP, лучшее, что я могу порекомендовать кому-то с опытом программирования, это PHP Cookbook из Ореилли. Он покажет вам, как выполнять общие задачи «путь PHP», и вы можете быстро искать функции, которые вы не узнаете на php.net .

-2
задан overexchange 10 August 2015 в 09:34
поделиться

2 ответа

    var o = {p: 42, q: true};
     var {p, q} = o;

Здесь var {p,q} = o является просто сокращением для var {p:p , q:q} = o

. Рассмотрим это.

      var o = { key : "value" };
      var { key : local_var } = o ;
      local_var === o["key"] // true

Если вы опускаете local_var и записываете var {key} = o; новый ключ переменной будет создан с помощью ключа ключа idenifier. То же самое, что и делать var key = o["key"]

Итак, в вашем примере это похоже на выполнение

      var p =  o["p"] ;  //42
       var q = o["q"];   //true
       var a = o["a"];  // undefined
       var b = o["b"];   //undefined

Это может быть не совсем правда, но должен помочь вам понять это. Это нечто вроде Pattern Matching, которое предоставляют другие языки, но это другое.

4
ответ дан cswl 17 August 2018 в 08:47
поделиться
  • 1
    var o = {p: 42, q: true};, а затем var {a:var1, b:var2} = o; это не работает. 'a' и 'b', 'p' и 'q' являются строковыми литералами. – overexchange 10 August 2015 в 10:05

Это потому, что, используя ваш синтаксис для разрушения объекта, имена, используемые в выражении LHS ({a, b}), используются в качестве ключей в выражении RHS (o). Поскольку a и b не являются свойствами o, это терпит неудачу (возвращает undefined).

Соответствующий раздел в спецификации для этого находится в Сроки выполнения Runtime: DestructingAssignmentEvaluation в AssignmentProperty: Инициализатор инициализации идентификатора (второй из последних). AssignmentProperty - это ваши ab ... отдельно) и. StringValue a является 'a' и используется как ключ для получения значения из o (в этом случае эквивалент o['a']).

Это сработает, если вы это сделаете :

var {p:a, q:b} = o;

, который использует AssignmentProperty: PropertyName: AssignmentElement (последняя запись), которая использует имя свойства (p) и элемент назначения (a).

4
ответ дан Amit 17 August 2018 в 08:47
поделиться
  • 1
  • 2
    a и b являются идентификаторами. p и q являются идентификаторами в var {p, q}. Но 'p' и 'q' являются свойствами (ключами) в словаре o, которые являются строковыми примитивными литералами. что вы подразумеваете под именем соответствия? – overexchange 10 August 2015 в 09:20
  • 3
    p & amp; q - свойства o. На них можно ссылаться как строковые ключи, используя нотацию object['key'] (o['p']) или через нотацию object.key (o.p). В любом случае это не связано с этой проблемой. Глобальный p & amp; q переменные не играют никакой роли в этом сценарии. – Amit 10 August 2015 в 09:24
  • 4
    @Kay - Спасибо за "взятие" пока меня не было :-). – Amit 10 August 2015 в 11:12
  • 5
    @overexchange: FWIW, данный o = {p:1, q:2}, здесь нет строковых литералов. p и q - фактически имена идентификаторов . Обозначение литерала объекта допускает строковые литералы , число литералов и имен идентификаторов как «ключи». ES6 также вводит имена вычисленных свойств . Как нечто выраженное в синтаксисе и представленное в памяти может отличаться. Если вы говорите о «литералах», то вы говорите о синтаксисе , а не о времени выполнения. – Felix Kling 10 August 2015 в 18:19
Другие вопросы по тегам:

Похожие вопросы: